코딩테스트 연습 > 코딩테스트 입문 > 중복된 숫자 개수
중복된 숫자 개수
문제 설명
정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요.
제한사항
1 ≤ array의 길이 ≤ 100
0 ≤ array의 원소 ≤ 1,000
0 ≤ n ≤ 1,000
입출력 예
array | n | result |
[1, 1, 2, 3, 4, 5] | 1 | 2 |
[0, 2, 3, 4] | 1 | 0 |
class Solution {
public int solution(int[] array, int n) {
int count = 0;
for(int i : array){
if(i == n){
count++;
}
}
return count;
}
}
코딩테스트 연습 > 코딩테스트 입문 > 최빈값 구하기
최빈값 구하기
문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
제한사항
0 < array의 길이 < 100
0 ≤ array의 원소 < 1000
입출력 예
array | result |
[1, 2, 3, 3, 3, 4] | 3 |
[1, 1, 2, 2] | -1 |
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
class Solution {
public int solution(int[] array) {
Map<Integer, Integer> frequencyMap = new HashMap<>();
for(int i : array){
frequencyMap.put(i, frequencyMap.getOrDefault(i, 0) + 1);
}
Optional<Integer> maxKey = frequencyMap.entrySet().stream()
.max(Comparator.comparing(Map.Entry::getValue))
.map(Map.Entry::getKey);
if (maxKey.isPresent()) {
int maxValue = frequencyMap.get(maxKey.get());
boolean hasMultipleMaxValues = frequencyMap.values().stream().filter(value -> value == maxValue).count() > 1;
if (hasMultipleMaxValues) {
return -1;
} else {
return maxKey.orElse(-1);
}
} else {
return -1;
}
}
}
getOrDefault
: 주어진 키에 해당하는 값이 존재하면 해당 값을 반환하고, 그렇지 않으면 지정된 기본값을 반환
사용 예시
Map<String, Integer> map = new HashMap<>();
map.put("apple", 10);
map.put("banana", 20);
int countApple = map.getOrDefault("apple", 0); // "apple"에 해당하는 값이 10이므로 countApple은 10이 됩니다.
int countGrape = map.getOrDefault("grape", 0); // "grape"에 해당하는 값이 없으므로 countGrape은 기본값 0이 됩니다.
이 경우 countApple은 10이 됩니다. "apple" 키에 해당하는 값이 이미 맵에 있기 때문입니다. 그러나 "grape" 키에 해당하는 값은 맵에 없으므로 getOrDefault 메서드는 기본값 0을 반환합니다.
이 메서드는 키가 맵에 존재하지 않을 때 예외가 발생하는 것을 피하고 기본값을 사용하여 안전하게 처리할 수 있도록 합니다.
다른사람의 풀이
import java.util.*;
class Solution {
public int solution(int[] array) {
int maxCount = 0;
int answer = 0;
Map<Integer, Integer> map = new HashMap<>();
for(int number : array){
int count = map.getOrDefault(number, 0) + 1;
if(count > maxCount){
maxCount = count;
answer = number;
}
else if(count == maxCount){
answer = -1;
}
map.put(number, count);
}
return answer;
}
}
'Chapter01 > 고딩데스드' 카테고리의 다른 글
[고딩데스드] 코드 처리하기 (0) | 2024.04.16 |
---|---|
[고딩데스드] 조건 문자열 (0) | 2024.04.12 |
[고딩데스드] 입문배열 원소의 길이 (0) | 2024.04.01 |
[고딩데스드] 홀짝에 따라 다른 값 반환하기 (2) | 2023.12.26 |
[고딩데스드] 두 수의 연산값 비교하기 (1) | 2023.12.26 |