문제 : programmers-모의고사
주어진 대로 구현을 하면 된다. 반복문과 배열만 다룰 줄 안다면 풀 수 있다. 이 때 1번, 2번, 3번 수포자의 공통된 부분의 길이가 서로 다른 부분(각각 5, 8, 10)에서 좀 어려울 수 있다. 각자 다른 index 변수를 사용해서 해당 배열의 크기가 됬다면 0으로 변경하는 방식으로 하거나, 3명의 공통부분 길이의 최소공배수인 40번 만큼 배열에 적어둔 후 풀면 쉽게 할 수 있다. 코드적으로 이해가 될 것 같다면 아래와 같이 %(나머지 연산)를 사용해 더 편하게 할 수 있다.
코드 : github
/**
* 문제 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
*/
class Solution {
private static final int[][] ARR = {
{1,2,3,4,5},
{2,1,2,3,2,4,2,5},
{3,3,1,1,2,2,4,4,5,5}
};
public int[] solution(int[] answers) {
int[] cnt = new int[3];
for (int i = 0; i < answers.length; i++) {
for (int j = 0; j < 3; j++) {
if (answers[i] == ARR[j][i%ARR[j].length])
cnt[j]++;
}
}
int max = 0;
int maxCnt = 0;
for (int i = 0; i < 3; i++) {
if (max < cnt[i]) {
max = cnt[i];
maxCnt = 1;
} else if (max == cnt[i]) {
maxCnt++;
}
}
int idx = 0;
int[] answer = new int[maxCnt];
for (int i = 0; i < 3; i++) {
if (cnt[i] == max) {
answer[idx++] = i+1;
}
}
return answer;
}
}
'PS > Programmers' 카테고리의 다른 글
[자바] 프로그래머스 - 타겟 넘버 (코딩테스트 연습 Lv2) (0) | 2022.04.18 |
---|---|
[자바] 프로그래머스 - 가사 검색 [코딩테스트 연습 Lv4] (0) | 2022.04.10 |
[자바] 프로그래머스 - 체육복 [코딩테스트 연습 Lv1] (0) | 2022.03.23 |
[자바] 프로그래머스 - 순위 [코딩테스트 연습 Lv3] (2) | 2021.11.12 |
[자바] 프로그래머스 - 위장 [코딩테스트 연습 Lv2] (0) | 2021.11.08 |
댓글