<Question>
<Answer>
import java.util.Arrays;
class Solution {
public int solution(int[] array) {
Arrays.sort(array);
int save = 0;
int answerSum = 0;
int answerNum = array[0];
int num = array[0];
for (int i : array) {
if(num == i) {
save += 1; // 배열의 이전의 숫자와 같으면 save를 +1 해준다.
} else {
if (save > answerSum) {
answerSum = save;
answerNum = num;
} else if (save == answerSum) { // 최빈값이 여러개일경우
answerSum = save;
answerNum = -1;
}
num = i;
save = 1;
}
}
// 마지막 배열의 요소를 비교하기위해서
if (save > answerSum) {
answerSum = save;
answerNum = num;
} else if (save == answerSum) {
answerSum = save;
answerNum = -1;
}
return answerNum;
}
}
< 문제 풀이>
1) array 배열의 요소 값을 하나씩 비교하기
- 향샹된 for문 사용
for (int i: array) {}
2) 배열의 요소의 값이 같으면 save를 1씩 추가 해줌
if (num == i) {
save += 1;
}
3-1) 요소의 값이 달라질때
- save의 값과 answerSum의 값을 비교하여 더 큰 값을 저장하고 더 큰 값을 answerSum에 저장, 그 때의 배열 인덱스의 해당하는 요소의 값을 answerNum에 저장
- 최빈값이 여러개 일 때 answerNum에 -1 저장
else {
if (save > answerSum) {
answerSum = save;
answerNum = num;
} else if (save == answerSum) { // 최빈값이 여러개일경우
answerSum = save;
answerNum = -1;
}
}
3-2) 요소의 값이 달라질때 save의 값은 1로 돌아감
else {
num = i;
save = 1;
}
4) 배열의 마지막 인덱스에 해당하는 부분은 for문을 제대로 돌지 않아 저장되지 않기 때문에 else문 안에 있는 if문을 한번 더 반복
if (save > answerSum) {
answerSum = save;
answerNum = num;
} else if (save == answerSum) {
answerSum = save;
answerNum = -1;
}
반응형
'study > 코딩테스트' 카테고리의 다른 글
[프로그래머스][Lv2][Java] 피로도 (0) | 2023.12.27 |
---|---|
[프로그래머스][Lv2] 거리두기 확인하기 (0) | 2023.12.21 |
[알고리즘] DFS(깊이우선탐색)와 BFS(너비우선탐색) (1) | 2023.12.20 |
[프로그래머스][Lv0] 모스부호(1) (0) | 2023.06.12 |
[프로그래머스][LV0] 문자열 여러번 뒤집기 (0) | 2023.06.10 |