https://school.programmers.co.kr/learn/courses/30/lessons/42840
1. ๋ฌธ์
์ํฌ์ 3๋ช ์ด ์ํ๋ฌธ์ ๋ฅผ ์ฐ๋๋ค.
๋ฌธ์ ์๋ ์ต๋ 10000๊ฐ์ด๊ณ ๊ฐ์ ์ฐ๋ ํจํด์ด ์๋ค.
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, ...
์ ๋ต ๋ฐฐ์ด answers๊ฐ ์ฃผ์ด์ก์ ๋ ๊ฐ์ฅ ๋ง์ ๋ฌธ์ ๋ฅผ ๋งํ ์ํฌ์์ ๋ฒํธ๋ฅผ ๋ฐฐ์ด ํํ๋ก ๋ฐํํ๋ค.
๊ฐ์ฅ ๋ง์ ๋ฌธ์ ๋ฅผ ๋ง์ถ ์ํฌ์๊ฐ ์ฌ๋ฟ์ผ ๊ฒฝ์ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ๋ฐํํ๋ค.
2. ํ์ด
์์ ํ์ ๋ฌธ์ ์ด๋ค.
์ด๋ ต์ง ์์ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ์ฌ ์ ๋๊ฒ ์ง์ ์ ์ถํ๋๋ฐ 5, 7 ํ ์คํธ์ผ์ด์ค์์ ๊ณ์ ๋งํ๋ค.
2์๊ฐ์ ๊ณ ๋ฏผํ๋ค ์์ธ์ ์ฐพ์ง ๋ชปํ์ฌ ๊ฒฐ๊ตญ ๋ธ๋ก๊ทธ๋ฅผ ์ฌ์ฉ ์ฐธ๊ณ ํ๊ฒ ๋์๋ค..
์์ธ์ Math.max์ ์์๋ค.
๋๋ ์ฒ์์ ์๋์ ๊ฐ์ด max ๊ฐ์ ๊ตฌํด์ฃผ์๋ค.
max = Math.max(p1_cnt, p2_cnt);
max = Math.max(p2_cnt, p3_cnt);
max = Math.max(p3_cnt, p1_cnt);
ํ์ง๋ง ์ ๋ต ์ฝ๋๋ ์๋์ ๊ฐ์๋ค.
max = Math.max(p1_cnt, Math.max(p2_cnt, p3_cnt));
์์ธ์ง ๋ฐฉ๊ธ ๊นจ๋ฌ์๋ค. ์ง๊ธ ์๊ฐํด๋ณด๋ ์ด๊ฑธ ๋ฌธ์ ๋ก ์ฌ๊ธฐ์ง ์์๋ค๋๊ฒ ๋๋๋ค
max๋ ํ ์ค๋ก ๋น๊ตํด์ค์ผ ํ๋ค. ์ด๋ ๊ฒ ํด์ผ p1_cnt, p2_cnt, p3_cnt 3๊ฐ ๊ฐ์ ๋ค๊ฐ์ด ๋น๊ตํ๋ค.
๋ฐ๋ฉด์ ์์ ์ ์ฝ๋๋ p1_cnt, p2_cnt ๋น๊ต ํ ๋์ด๋ค. ์ค๋ง๋ค max๊ฐ ๊ฐฑ์ ๋ ๋ฟ 3๊ฐ๊ฐ์ max๋ฅผ ๊ตฌํ ์ ์๋ ๊ฒ์ด๋ค.
max = Math.max(p1_cnt, p2_cnt);
max = Math.max(max, p3_cnt);
์ด๋ ๊ฒ ํ๋ฉด ๋์ ๊ฒ์ด๋ค. p1_cnt, p2_cnt ๋น๊ตํ ๊ฐ max๋ฅผ ๊ฐ์ง๊ณ p3_cnt์ ๋น๊ตํ๊ธฐ ๋๋ฌธ์ด๋ค.
3. ์ฝ๋
import java.io.*;
import java.util.*;
class Solution {
static int p1_cnt, p2_cnt, p3_cnt, max;
static List<Integer> ansList = new ArrayList<> ();
static int[] ans;
static int[] p1 = {1, 2, 3, 4, 5};
static int[] p2 = {2, 1, 2, 3, 2, 4, 2, 5};
static int[] p3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
public int[] solution(int[] answers) {
for (int i=0; i<answers.length; i++) {
//1๋ฒ
if (answers[i] == p1[i%5]) p1_cnt++;
//2๋ฒ
if (answers[i] == p2[i%8]) p2_cnt++;
//3๋ฒ
if (answers[i] == p3[i%10]) p3_cnt++;
//๋น๊ต
max = Math.max(p1_cnt, Math.max(p2_cnt, p3_cnt));
// ์ด๋ ๊ฒ ํ๋ค๊ฐ ํ๋ฆผ
// max = Math.max(p1_cnt, p2_cnt);
// max = Math.max(p2_cnt, p3_cnt);
// max = Math.max(p3_cnt, p1_cnt);
}
// max๊ฐ 0์ผ ๊ฒฝ์ฐ
if (max == 0) return new int[] {1, 2, 3};
if (max == p1_cnt) {
ansList.add(1);
}
if (max == p2_cnt) {
ansList.add(2);
}
if (max == p3_cnt) {
ansList.add(3);
}
ans = new int[ansList.size()];
for (int i=0; i<ansList.size(); i++) {
ans[i] = ansList.get(i);
}
return ans;
}
}
4. ์ฌ๋ด
๋์น ๋ถ๋ถ์ ๊ณ ๋ฏผํ๋ ์๊ฐ์ ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ํ ์ ์์์ ํ ๋ฐ
์ฒ์์ ์งค ๋๋ถํฐ ๋น ๋ฅด๊ฒ ์์์ฐจ๋ฆฌ์ง ๋ชปํ ์ ์ด ์์ฌ์ ๋ค.
์์์ข ๋ ๋ค๋ฅธ๊ฑฐ ํ๋ฌ ๊ฐ๋ณด์์์
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] ์์์ฐพ๊ธฐ (level 2) - Java (1) | 2023.09.18 |
---|---|
[Programmers] ์์์ฐพ๊ธฐ(Level 1) - Java (0) | 2023.09.16 |
[Programmers] ๋ฑ๊ตฃ๊ธธ - Java (0) | 2023.08.24 |
[Programmers] ์ผ๊ทผ ์ง์ - Java (0) | 2023.08.22 |
[Programmers] ์ต๊ณ ์ ์งํฉ - Java (0) | 2023.08.20 |