🔥 코딩 테스트 연습 > 완전 탐색
예제:
answers | return |
[1, 2, 3, 4, 5] | [1] |
[1, 3, 2, 4, 2] | [1, 2, 3] |
제한 조건:
- 시험은 최대 10,000 문제로 구성되어있습니다.
- 문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
- 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.
Solution #1
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
public int[] solution(int[] answers) {
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};
Person[] array = new Person[3];
for (int i = 0; i < array.length; i++) {
array[i] = new Person(i + 1, 0);
}
for (int i = 0; i < answers.length; i++) {
if (answers[i] == one[i % 5]) array[0].count++;
if (answers[i] == two[i % 8]) array[1].count++;
if (answers[i] == three[i % 10]) array[2].count++;
}
int max = Math.max(array[0].count, Math.max(array[1].count, array[2].count));
List<Integer> list = new ArrayList<>();
for (Person p : array) {
if (p.count == max) list.add(p.id);
}
int[] result = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
result[i] = list.get(i);
}
Arrays.sort(result);
return result;
}
private class Person {
int id;
int count;
public Person(int id, int count) {
this.id = id;
this.count = count;
}
}
}
Result #1
💡 수포자1, 수포자2, 수포자3과 answers 간의 index 규칙을 찾는다.
찍는 방식을 보면 수포자 1은 5번, 수포자 2는 8번, 수포자 3은 10번마다 한번씩 되돌아 온다.
그 뜻은 수포자 1은 one[0] 의 값으로 answers[0] 과 answers[5], answers[10], ... , answers[i x 5] 의 문제를 찍었다는 것이 된다.
위와 같은 방법으로 for 반복문으로 수포자 1, 수포자 2, 수포자 3이 찍은 답이 answers 와 얼마나 일치하는 지 검사한다.
for (int i = 0; i < answers.length; i++) {
if (answers[i] == one[i % 5]) count1++;
if (answers[i] == two[i % 8]) count2++;
if (answers[i] == three[i % 10]) count3++;
}
나는 Persion 이라는 객체를 생성해서 수포자 1, 2, 3을 나타내는 id 값과 각 count 값을 저장했다.
이제 저장한 값을 가지고, count가 최대인 수포자의 id를 정수형 배열로 리턴하면 된다.
More Algorithm!
👇👇
github.com/ggujangi/ggu.programmers
출처 : 프로그래머스
'프로그래머스 - JAVA > Level 1' 카테고리의 다른 글
[JAVA] 프로그래머스 Lv.1 : 키패드 누르기 (0) | 2021.04.07 |
---|---|
[JAVA] 프로그래머스 Lv.1 : 두 개 뽑아서 더하기 (0) | 2021.04.04 |
[JAVA] 프로그래머스 Lv.1 : 체육복 (0) | 2021.04.04 |
[JAVA] 프로그래머스 Lv.1 : 2016년 (0) | 2021.04.04 |
[JAVA] 프로그래머스 Lv.1 : K번째수 (0) | 2021.04.04 |