목표 (문제)
1~5까지를 일정한 패턴으로 반복할때, 그 값들을 주어진 answers와 비교하여 일치하는 값의 갯수들을 배열로 반환하시요.
조건
- answers 의 길이는 최대 10,000 입니다.
- 배열값은 반드시 1, 2, 3, 4, 5 중 하나입니다.
- 일치하는 개수가 동일할 경우, Index를 기준으로 오름차순 정렬해주세요.
- 일치하는 값이 모두 없을때, 두 반환합니다.
코드
public class Main {
public static void main(String[] args) {
int[] answers = { 3, 1, 1 };
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;
}
}
0 개의 댓글:
댓글 쓰기