https://school.programmers.co.kr/learn/courses/30/lessons/120812
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가
매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
나의 풀이
import java.util.*;
class Solution {
public int solution(int[] array) {
int answer = 0;
HashMap<Integer,Integer> map = new HashMap<>();
if(array.length == 1) {
return array[0];
}
for(int num : array){
map.put(num,map.getOrDefault(num,0)+1);
}
int max = 0;
for(int key : map.keySet()){
max = (map.get(key) > max) ? map.get(key) : max;
}
int cnt = 0;
for(int key : map.keySet()){
if(max == map.get(key)){
answer = key;
cnt++;
}
}
if(cnt > 1){
return -1;
}
return answer;
}
}
활용한 주요 메소드 정리
| 메소드 명 | 설명 |
| getOrDefault() | 문자열이나 숫자의 개수를 세는 문제에서 빠지지 않는 hashMap의 중요 메소드이다. 탐색하고자 하는 숫자를 키값으로 넣고 없을 경우는 0을 입력하여 get의 오류를 방지하고 처음 들어오는 값도 초기화 할 수 있고 다음 들어오는 값은 이전 입력한 데이터를 가져오는 것도 가능하다. |
| keySet() | hashMap이 갖고 있는 키들을 불러온다. 데이터들을 탐색할 수 있다. 주로 for문과 함께 쓰인다. for(int key : map.keySet()){ //keySet에서 S는 대문자! } |
'알고리즘' 카테고리의 다른 글
| [알고리즘]유클리드 호제법을 이용한 최대공약수와 최소공배수 구하기_java (0) | 2023.05.29 |
|---|---|
| [알고리즘]프로그래머스-추억점수(2차원 배열과 해시테이블의 합작)_java (2) | 2023.05.29 |
| [알고리즘]프로그래머스-한 번만 등장한 문자(해시테이블을 곁들인,List의 정렬 방법) (0) | 2023.05.29 |
| [알고리즘]int형 배열의 내림차순과 오름차순(feat.Integer형 배열으로 변환) (2) | 2023.05.29 |
| [알고리즘] 동일한 숫자 개수 세기(+동일한 문자의 개수) (0) | 2023.05.29 |