https://school.programmers.co.kr/learn/courses/30/lessons/42840
import java.util.*;
class Solution {
public int[] solution(int[] answers) {
int[] answer = {};
int[] supo1 = {1, 2, 3, 4, 5};
int[] supo2 = {2, 1, 2, 3, 2, 4, 2, 5};
int[] supo3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
int[] cnt = {0,0,0};
for(int i=0; i<answers.length; i++) {
if(supo1[i%supo1.length] == answers[i]) {
cnt[0]++;
}
if(supo2[i%supo2.length] == answers[i]) {
cnt[1]++;
}
if(supo3[i%supo3.length] == answers[i]) {
cnt[2]++;
}
}
int max = Math.max(Math.max(cnt[0], cnt[1]),cnt[2]);
ArrayList<Integer> maxList = new ArrayList<>();
if(cnt[0] == max) {
maxList.add(1);
}
if(cnt[1] == max) {
maxList.add(2);
}
if(cnt[2] == max) {
maxList.add(3);
}
answer = new int[maxList.size()];
for(int i =0; i<answer.length; i++) {
answer[i] = maxList.get(i);
}
return answer;
}
}
i%supo.length를 했을때
1%10 = 1이다
11%10 = 1
21%10 = 1
즉 수가 아무리 올라가도 배열의 length안에서 수가 돌아간다
그 후 max를 구하는 식은 Math.max를 이용해 [0]과 [1]중에 큰 수를 고르고 그 값과 [2]를 비교시켰다
레벨1짜리이지만 까보면 좀 난이도가 있다 1은 아니고 2에 가까운 수준이다
나는 이 문제에 거의 3시간을 쏟았다
사실 문제는 맞췄었는데 아무리 밑에 최대값을 구하고 list에 집어넣는 코드를 바꾸고 고쳐도 특정 문제가 오답으로 나왔다.
너무 개빡쳐서 떄려치려고 하기전 코드를 처음주터 깊게 살펴보았다
그리고 깨달았다
for문안에 supo1 supo2 supo3이렇게 되야되는데
supo1 supo2 supo2이렇게 supo2가 2번 반복되어있었다
그래서 이 코드를 고친다음에 돌려보니깐 와 바로성공
이 오타 하나때문에 문제푼시간 제외 2시간50분은 쏟아부은거같다
개발자분들이 말하던것이 있다.
복붙할때 오타를 조심하라고
나는 supo2를 복붙하고나서 안바꿨었다.
이러한 가벼운 실수때문에 시급기준 약 25000원어치를 쏟아부었다
완전 비효율적이다
오타는 정말정말정말 중요하단것을 이번일로 깨달았다. 정말 조심하자 정말