목표
1~5까지를 일정한 패턴으로 반복할때, 그 값들을 주어진 answers와 비교하여 일치하는 값의 갯수들을 배열로 반환하시요.
조건
- answers 의 길이는 최대 10,000 입니다.
- 배열값은 반드시 1, 2, 3, 4, 5 중 하나입니다.
- 일치하는 개수가 동일할 경우, Index를 기준으로 오름차순 정렬해주세요.
- 일치하는 값이 모두 없을때, 두 반환합니다.
-
코드
public class Main { public static void main(String[] args) { // int[] answers = { 1, 2, 3, 4, 5 }; // int[] answers = { 1,3,2,4,2 }; int[] answers = { 3, 1, 1 }; // int[] answers = { 4, 4 }; for (int val : solution(numbers)) { System.out.print(val + ","); } } public static int[] solution(int[] answers) { int persons[][] = { { 1, 2, 3, 4, 5 }, { 2, 1, 2, 3, 2, 4, 2, 5 }, { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 } }; int result[][] = new int[persons.length][2]; // 결과값 구조 초기화 for (int i = 0, len = result.length; i < len; i++) { result[i][0] = i + 1; result[i][1] = 0; } // 패턴대로 순환하며 일치 개수 체크 for (int i = 0, len = answers.length; i < len; i++) { for (int j = 0; j < persons.length; j++) { if (persons[j][i % persons[j].length] == answers[i]) result[j][1]++; } } // 일치개수 기반하여 정렬 Arrays.sort(result, new Comparator<int[]>() { @Override public int compare(int[] back, int[] front) { return front[1] - back[1]; } }); // 출력할 길이 지정하여 반환값 설정 int length = result[0][1] == 0 ? result.length : 1; int[] answer = new int[length]; for (int i = 0; i < length; i++) { answer[i] = result[i][0]; } return answer; } }
댓글남기기