class Solution {
public int[] solution(int[] answers) {
int seqOne = 0;
int seqTwo = 0;
int seqThree = 0;
int scoreOne = 0;
int scoreTwo = 0;
int scoreThree = 0;
int[] one = new int[]{1,2,3,4,5};
int[] two = new int[]{2,1,2,3,2,4,2,5};
int[] three = new int[]{3,3,1,1,2,2,4,4,5,5};
for (int i = 0; i < answers.length; i++) {
if (answers[i] == one[seqOne]) {
scoreOne++;
}
if (answers[i] == two[seqTwo]) {
scoreTwo++;
}
if (answers[i] == three[seqThree]) {
scoreThree++;
}
seqOne++;
seqTwo++;
seqThree++;
if (seqOne >= one.length) {seqOne = 0;}
if (seqTwo >= two.length) {seqTwo = 0;}
if (seqThree >= three.length) {seqThree = 0;}
}
if (scoreOne == scoreTwo && scoreTwo == scoreThree) {
return new int[]{1,2,3};
} else if(scoreOne == scoreTwo && scoreTwo > scoreThree) {
return new int[]{1,2};
} else if(scoreOne == scoreThree && scoreThree > scoreTwo) {
return new int[]{1,3};
} else if(scoreTwo == scoreThree && scoreTwo > scoreOne) {
return new int[]{2,3};
} else if(scoreOne > scoreTwo && scoreOne > scoreThree) {
return new int[]{1};
} else if(scoreTwo > scoreThree && scoreTwo > scoreOne) {
return new int[]{2};
} else if(scoreThree > scoreOne && scoreThree > scoreTwo) {
return new int[]{3};
} else {
return new int[]{};
}
}
}
코드를 작성하면서 고민했던 주요 사항은 아래와 같다.
import java.util.ArrayList;
class Solution {
public int[] solution(int[] answer) {
int[] a = {1, 2, 3, 4, 5};
int[] b = {2, 1, 2, 3, 2, 4, 2, 5};
int[] c = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
int[] score = new int[3]; // 점수를 저장할 배열
for(int i=0; i<answer.length; i++) {
if(answer[i] == a[i%a.length]) {score[0]++;}
if(answer[i] == b[i%b.length]) {score[1]++;}
if(answer[i] == c[i%c.length]) {score[2]++;}
}
int maxScore = Math.max(score[0], Math.max(score[1], score[2]));
ArrayList<Integer> list = new ArrayList<>();
if(maxScore == score[0]) {list.add(1);}
if(maxScore == score[1]) {list.add(2);}
if(maxScore == score[2]) {list.add(3);}
return list.stream().mapToInt(i->i.intValue()).toArray();
}
}
Math.max
함수를 사용해 간단하게 해결할 수 있다.