- 내 풀이
import java.util.*;
class Solution {
public int solution(int[] array) {
int answer = 0;
// 같은 숫자가 있을때 + 할 변수
int count = 0;
int num = 0;
// 매개변수의 개수를 더하기 위한 HashMap
HashMap<Integer, Integer> map = new HashMap<>();
for (int a : array){
// map에 a라는 key의 여부 확인
if (!map.containsKey(a)){
count = 0;
// 한번 더 array를 반복하면서 자신을 포함한 값을 count함
for(int b : array){
if (a == b){
count++;
// 반복되는 수 중에 자신의 key가 같으면 +된 count를 넣는 방식
map.put(a, count);
}
}
}
// map에 넣은 키들의 개수를 확인
for (int a : map.keySet()){
if (map.get(a) > num){
// 매개변수의 값
num = map.get(a);
// 매개변수 키값
answer = a;
}else if(map.get(a) == num){ // 개수가 같다면 최빈값이 여러개인 경우
answer = -1;
}
}
return answer;
}
}
- 다른 사람 풀이
import java.util.*;
class Solution {
public int solution(int[] array) {
int maxCount = 0;
int answer = 0;
Map<Integer, Integer> map = new HashMap<>();
// getOrDefault : 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드
// getPrDefault(Object key, V DefaultValue)
// 매개변수 : 이 메서드는 두개의 매개변수를 허용
// key : 값을 가져와야 하는 요소의 키
// defaultValue : 지정된 키로 매핑된 값이 없는 경우 반환되어야 하는 기본값
// 반환값 : 찾는 key가 존재하면 해당 key에 매핑되어 있는 값을 반환하고, 그렇지 않으면 디폴트 값이 반환
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;
}
}
다른 분들은 map.getOrdefault라는 메서드를 사용하였다
map.getOrdefault(key값 , default값)는 key의 값이 있으면 key의 값을 없다면 default 값을 반환해준다
풀이에서는
for문을 이용하여 해당 key값을 넣고 값이 없으면 0 이지만 개수를 구하는 중이기 때문에 +1을
key값이 있다면 key의 개수를 가져오고 거기에 +1 을해주는 식이다.
String[] people = {"A", "B", "B", "C", "D", "E"};
Map<String, Integer> map = new HashMap<>();
for(String a : people){
map.put(a, map.getOrDefault(a, 0) + 1);
}
System.out.println(map);
// {A=1, B=2, C=1, D=1, E=1}
'프로그래머스 > [프로그래머스 - JAVA] Lv.0' 카테고리의 다른 글
[프로그래머스 - JAVA] 다음에 올 숫자 (0) | 2023.03.18 |
---|---|
[프로그래머스 - JAVA] OX퀴즈 (0) | 2023.03.18 |
[프로그래머스 - JAVA] 다항식 더하기 (0) | 2023.03.18 |
[프로그래머스 - JAVA] 저주의 숫자 3 (0) | 2023.03.17 |
[프로그래머스 - JAVA] 문자열 밀기 (0) | 2023.03.17 |
댓글