-
[์์ ํ์] ๋ชจ์๊ณ ์ฌ๊ณต๋ถ/์๊ณ ๋ฆฌ์ฆ 2022. 10. 3. 04:56728x90
๋ฌธ์ ์ค๋ช
์ํฌ์๋ ์ํ์ ํฌ๊ธฐํ ์ฌ๋์ ์ค๋ง์ ๋๋ค. ์ํฌ์ ์ผ์ธ๋ฐฉ์ ๋ชจ์๊ณ ์ฌ์ ์ํ ๋ฌธ์ ๋ฅผ ์ ๋ถ ์ฐ์ผ๋ ค ํฉ๋๋ค. ์ํฌ์๋ 1๋ฒ ๋ฌธ์ ๋ถํฐ ๋ง์ง๋ง ๋ฌธ์ ๊น์ง ๋ค์๊ณผ ๊ฐ์ด ์ฐ์ต๋๋ค.
1๋ฒ ์ํฌ์๊ฐ ์ฐ๋ ๋ฐฉ์: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2๋ฒ ์ํฌ์๊ฐ ์ฐ๋ ๋ฐฉ์: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3๋ฒ ์ํฌ์๊ฐ ์ฐ๋ ๋ฐฉ์: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...1๋ฒ ๋ฌธ์ ๋ถํฐ ๋ง์ง๋ง ๋ฌธ์ ๊น์ง์ ์ ๋ต์ด ์์๋๋ก ๋ค์ ๋ฐฐ์ด answers๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ์ฅ ๋ง์ ๋ฌธ์ ๋ฅผ ๋งํ ์ฌ๋์ด ๋๊ตฌ์ธ์ง ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์กฐ๊ฑด- ์ํ์ ์ต๋ 10,000 ๋ฌธ์ ๋ก ๊ตฌ์ฑ๋์ด์์ต๋๋ค.
- ๋ฌธ์ ์ ์ ๋ต์ 1, 2, 3, 4, 5์ค ํ๋์ ๋๋ค.
- ๊ฐ์ฅ ๋์ ์ ์๋ฅผ ๋ฐ์ ์ฌ๋์ด ์ฌ๋ฟ์ผ ๊ฒฝ์ฐ, returnํ๋ ๊ฐ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
์ ์ถ๋ ฅ ์ ์ค๋ช[1,2,3,4,5] [1] [1,3,2,4,2] [1,2,3] ์ ์ถ๋ ฅ ์ #1
- ์ํฌ์ 1์ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ๋งํ์ต๋๋ค.
- ์ํฌ์ 2๋ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํ๋ ธ์ต๋๋ค.
- ์ํฌ์ 3์ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํ๋ ธ์ต๋๋ค.
๋ฐ๋ผ์ ๊ฐ์ฅ ๋ฌธ์ ๋ฅผ ๋ง์ด ๋งํ ์ฌ๋์ ์ํฌ์ 1์ ๋๋ค.
์ ์ถ๋ ฅ ์ #2
- ๋ชจ๋ ์ฌ๋์ด 2๋ฌธ์ ์ฉ์ ๋ง์ท์ต๋๋ค.
์ฒ์ ํผ ์ฝ๋
์์ด๋์ด ์๊ฐํ๋๊ฑด ์ด๋ ต์ง ์์๋ค.
1, 2, 3๋ฒ ์ํฌ์๋ค์ด ์ฐ๋ ๋ฐฉ์์ ๋ด์ ๋ฐฐ์ด๊ณผ ์ ๋ ฅ๋ฐ์ answers ๋ฐฐ์ด์
answers ๊ธธ์ด๋งํผ ๋น๊ตํด์ฃผ๋ฉด์ ์ฑ์ ํ ํ
๋ง์ ๊ฐ์๋ก ์ ๋ ฌํด ๊ฐ์ฅ ๋ง์ ๋ฌธ์ ๋ฅผ ๋งํ ์ฌ๋(ํน์ ๋ฐฐ์ด)์ ๋ฆฌํดํ์!
์ผ์ฌ์ฐจ๊ฒ ํ์๋๋ฐ
ํ ์คํธ 2 ใ ์คํจ (2.13ms, 71.8MB) ํ ์คํธ 3 ใ ํต๊ณผ (2.00ms, 77.8MB) ํ ์คํธ 4 ใ ํต๊ณผ (1.77ms, 73.8MB) ๋๋จธ์ง ํ ์คํธ์ผ์ด์ค๋ ๋ฐํ์์๋ฌ

์ ๋ฐํ์์๋ฌ๊ฐ ์ด๋ ๊ฒ ๋ง์ด๋์ง? ํ๋๋ฐ ํฌ๋ฌธ์์ ~~~~~์คํ๊ฐ ์์๋ค. p2 -> p3๋ก ๊ณ ์ณ์ค๋ค.
์ฝ๋๋ ๋ฐ๋ณต์ด ๋ง๋ค. ๊ณ ์ณ์ผ๊ฒ ๋ค.
public int[] solution(int[] answers) { int[] answer = {}; int[] grading = {}; grading = new int[3]; int[] p1= { 1, 2, 3, 4, 5}; int[] p2 = { 2, 1, 2, 3, 2, 4, 2, 5}; int[] p3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5}; int i1 = 0; int i2= 0 ; int i3 = 0; //์์ ํ์ answer๊ธธ์ด๋งํผ 1๋ฒ,2๋ฒ,3๋ฒ์ ๋ง์ ๊ฐ์ ํ์ธ for(int i =0;i<answers.length;i++) { if(p1[i1++] == answers[i]) { grading[0] += 1; } if(p2[i2++] == answers[i]) { grading[1] += 1; } if(p2[i3++] == answers[i]) { //~~~~์คํ ๋์์์ p2->p3๋ก ๊ณ ์นจ grading[2] += 1; } if(i1 == p1.length-1) { i1 = 0; } if(i2 == p2.length-1) { i2 = 0; } if(i3 == p3.length-1) { i3 = 0; } } ArrayList<Integer> answerlist = new ArrayList<>(); // ์์ํฌ๋ฌธ ๋๋ฆฌ๋ฉด์ ์ ๋ ฌ์ ํ๋๊ฒ ๋์๊น? ์๋ ๋ง์ถ๊ฐ์ ๊ตฌํํ ํฌ๋ฌธ๋น ์ ธ๋์ค๊ณ ๊ตฌํ๋๊ฒ ๋์๊น? for(int i =0;i<grading.length;i++) { if(grading[i] == Arrays.stream(grading).max().getAsInt()) { answerlist.add(i+1); } } int j=0; answer = new int[answerlist.size()]; for(int a:answerlist) { answer[j++] = a; } return answer; }
์ ์ถํ ์ฝ๋
import java.util.ArrayList; import java.util.Arrays; class Solution { public int[] solution(int[] answers) { int[] answer = {}; int[] grading = {}; grading = new int[3]; int[] p1= { 1, 2, 3, 4, 5}; int[] p2 = { 2, 1, 2, 3, 2, 4, 2, 5}; int[] p3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5}; int i1 = 0; int i2 = 0; int i3 = 0; int p1_len = p1.length; int p2_len = p2.length; int p3_len = p3.length; //์์ ํ์ answer๊ธธ์ด๋งํผ 1๋ฒ,2๋ฒ,3๋ฒ์ ๋ง์ ๊ฐ์ ํ์ธ for(int i =0;i<answers.length;i++) { if(p1[i1%p1_len] == answers[i]) grading[0]+= 1; if(p2[i2%p2_len] == answers[i]) grading[1]+= 1; if(p3[i3%p3_len] == answers[i]) grading[2]+= 1; i1++; i2++; i3++; } ArrayList<Integer> answerlist = new ArrayList<>(); // ๋ง์ด ๋ง์ถ ์ฌ๋ ์์๋๋ก ์ ๋ ฌ max ๊ฐ stream์ผ๋ก ์ฐพ๊ธฐ // int max = Arrays.stream(grading).max().getAsInt(); // for(int i =0;i<grading.length;i++) { // if(max==grading[i]) { // answerlist.add(i+1); // } // } // ๋ง์ด ๋ง์ถ ์ฌ๋ ์์๋๋ก ์ ๋ ฌ max ๊ฐ for๋ฌธ์ผ๋ก ๊ตฌํ๊ธฐ int max = 0; for(int i = 0 ; i < grading.length;i++) { if(max<grading[i]) max=grading[i]; } for(int i =0;i<grading.length;i++) { if(max==grading[i]) { answerlist.add(i+1); } } //arraylist answer ๋ฐฐ์ด์ ์ฎ๊ฒจ์ฃผ๊ธฐ int j=0; answer = new int[answerlist.size()]; for(int a:answerlist) { answer[j++] = a; } return answer; } }์ฉ ์ข์ ์ฝ๋๋ ์๋ ๊ฒ ๊ฐ๋ค. arraylist๋ฅผ ์ฐ์ง์๊ณ ํธ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํด๋ด์ผ๊ฒ ๋ค.
Stream API๋ก ๋ฐฐ์ด์ max๊ฐ์ ๊ตฌํ๋ ๊ฒ๋ณด๋ค for๋ฌธ์ ๋๋ ค ์ง์ max๊ฐ์ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ด ํ์คํ ๋ ๋น ๋ฅด๋ค.
ํ ์คํธ์ผ์ด์ค \ max๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ for๋ฌธ์ผ๋ก max๊ฐ ๊ตฌํ๊ธฐ Arrays.stream(grading).max().getAsInt() ํ ์คํธ 1 ใ ํต๊ณผ (0.03ms, 78.1MB) ํต๊ณผ (0.84ms, 80MB) ํ ์คํธ 2 ใ ํต๊ณผ (0.03ms, 76.4MB) ํต๊ณผ (0.78ms, 70.6MB) ํ ์คํธ 3 ใ ํต๊ณผ (0.03ms, 73.7MB) ํต๊ณผ (0.97ms, 76.4MB) ํ ์คํธ 4 ใ ํต๊ณผ (0.03ms, 74MB) ํต๊ณผ (0.84ms, 84.1MB) ํ ์คํธ 5 ใ ํต๊ณผ (0.05ms, 72MB) ํต๊ณผ (0.74ms, 74.6MB) ํ ์คํธ 6 ใ ํต๊ณผ (0.04ms, 75.4MB) ํต๊ณผ (0.77ms, 72MB) ํ ์คํธ 7 ใ ํต๊ณผ (0.35ms, 77.5MB) ํต๊ณผ (1.09ms, 79.6MB) ํ ์คํธ 8 ใ ํต๊ณผ (0.14ms, 77.2MB) ํต๊ณผ (0.90ms, 75.9MB) ํ ์คํธ 9 ใ ํต๊ณผ (0.62ms, 76.9MB) ํต๊ณผ (1.85ms, 81.3MB) ํ ์คํธ 10 ใ ํต๊ณผ (0.34ms, 73MB) ํต๊ณผ (1.10ms, 75.1MB) ํ ์คํธ 11 ใ ํต๊ณผ (0.70ms, 78.9MB) ํต๊ณผ (1.31ms, 76.5MB) ํ ์คํธ 12 ใ ํต๊ณผ (0.62ms, 74.1MB) ํต๊ณผ (1.33ms, 75MB) ํ ์คํธ 13 ใ ํต๊ณผ (0.07ms, 81.6MB) ํต๊ณผ (0.72ms, 77.9MB) ํ ์คํธ 14 ใ ํต๊ณผ (0.69ms, 70.1MB) ํต๊ณผ (2.14ms, 81.3MB) '๊ณต๋ถ > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Greedy | ํ์์ ์๊ณ ๋ฆฌ์ฆ] ๋ ์ํผ (0) 2022.11.14 [์์ ํ์/Level1/Java] ์ต์ ์ง์ฌ๊ฐํ (1) 2022.10.06 [์์ ํ์/Level2/Java] ์นดํซ (1) 2022.10.06 [์์ ํ์/Level2/Java] ํผ๋ก๋ (1) 2022.10.06 [์์ ํ์/Level2/Java] ์์ ์ฐพ๊ธฐ (0) 2022.10.04