연습장
58. 최빈값 구하기 본문
Q. 최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
빈도수를 세는 문제는 객체로 만들어서 풀면 이해하기 편하다.
1. 객체로 만든다.
빈 객체 dic 를 만들고
배열 array 의 원소가 dic 에 존재 할 경우 해당 value 값을 1 증가
없을 경우 해당 value 값을 1로 만든다.
let array = [1, 2, 3, 3, 3, 4]
let dic = {}
for (i of array){
if(i in dic){
dic[i] += 1
}
else {
dic[i] = 1
}
}
console.log(dic) // { '1': 1, '2': 1, '3': 3, '4': 1 }
2. 빈도수가 가장 큰 값을 찾는다.
value 가 가장 큰 값을 담을 변수 d_key 와 d_val 을 만들고
for 문을 이용하여 dic 를 돌며 큰값을 찾는다.
// 객체의 value 가 가장 큰 값의 key 와 value
let d_key = 0 // key
let d_val = 0 // value
for(i in dic){
if(dic[i] > d_val){
d_val = dic[i]
d_key = Number(i)
}
}
문제의 조건에 따라서
큰값이 2개 이상일경우 아래의 for 문을 이용하여 -1 을 반환하고
해당 없을 경우 value 가 가장 큰 값의 key 값이 반환된다.
// value 가 가장 큰 값이 2개 이상 일 경우
// key 가 다른데 value 가 같은 값 이 있는지 확인
for (i in dic){
if(d_key != i && d_val == dic[i]){
return -1
}
}
return d_key;
전체 정답 코드
function solution(array) {
let dic = {}
for (i of array){
if(i in dic){
dic[i] += 1
}
else {
dic[i] = 1
}
}
let d_key = 0 // key
let d_val = 0 // value
for(i in dic){
if(dic[i] > d_val){
d_val = dic[i]
d_key = Number(i)
}
}
for (i in dic){
if(d_key != i && d_val == dic[i]){
return -1
}
}
return d_key;
}
'프로그래머스 > 0단계' 카테고리의 다른 글
60. 평행 (0) | 2023.08.20 |
---|---|
59. 이차원 배열 대각선 순회하기 (0) | 2023.08.20 |
57. 분수의 덧셈 (0) | 2023.08.19 |
56. 간단한 식 계산하기 (0) | 2023.07.11 |
55. 대문자로 바꾸기 (0) | 2023.07.11 |