Java/Coding Test

모의고사 문제 풀이

최고다최코딩 2023. 9. 30. 00:37
728x90

답을 찍는 3가지 패턴과 정답이 주어질 때 

3가지 패턴 중 정답을 가장 많이 맞힌 패턴을 오름차순 정렬하여 반환 

 

public ArrayList<Integer> solution(int[] answers) {

int[] answer = new int[3];

int[] first = { 1, 2, 3, 4, 5 };

int[] second = { 2, 1, 2, 3, 2, 4, 2, 5 };

int[] third = { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 };

int firstScore = score(first,answers);

int secondScore = score(second,answers);

int thirdScore = score(third,answers);

int max = Math.max(secondScore, thirdScore);

max = Math.max(max, firstScore);

ArrayList<Integer> list = new ArrayList<Integer>();

if(max==firstScore) list.add(1);

if(max==secondScore) list.add(2);

if(max==thirdScore) list.add(3);

return list;

}

 

public int score(int[] person,int[] answers) {

int score = 0;

for (int i = 0; i < answers.length; i++) {

if(answers[i]==person[i%person.length])score++;

}

return score;

}

정답 개수 구하기

==> 패턴이 반복되기 때문에 %(패턴길이)로 패턴길이를 넘어가면 다시 앞으로 돌아와서 비교할 수 있게 한다.

 

최고점 구하여 1번부터 최고점과 같으면 list에 넣어 반환 

 

만약 패턴이 많아진다면

score를 배열에 넣고 정렬로 최고점을 구한 후 

반복문으로 list에 넣어 간결한 코드를 만들 수 있다.