https://school.programmers.co.kr/learn/courses/30/lessons/120812
Q. 최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
function solution(array) {
const result = array.reduce((accu, curr)=>{
accu[curr] = (accu[curr] || 0)+1;
return accu;
}, {});
const max = Math.max(...Object.values(result));
const answer = Object.keys(result).filter(key => result[key] === max);
// answer 배열에는 string 타입은 값이 들어가 있으니 정수로 형변환 필요
return answer.length === 1 ? Number(answer[0]) : -1;
}
※ result[x] = (result[x] || 0) + 1; 를 풀어쓰면 아래의 코드가 된다.
e.g. const array = ['a', 'b', 'b', 'c'];
if(result[x]) {
result[x] = result[x] + 1;
}else {
result[x] = 0 + 1;
}
/*
처음 배열의 첫번째 값 'a'가 들어오면 result[x](=result.a)는 undefined
그러므로 result에 a라는 속성을 추가하고 0+1의 값인 1을 세팅.
그 후 배열의 두번째 값인 'b'가 들어오면 앞의 로직처럼
result에 b라는 속성을 추가하고 1을 세팅.
세번째 값인 'b'가 들어오면
result.b의 값이 1이므로 result.b + 1을 수행.
result.b의 값은 2가 된다.
*/
'한 번만 등장만 문자'도 같은 로직으로 풀 수 있음 !
https://school.programmers.co.kr/learn/courses/30/lessons/120896
Q. 문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
function solution(s) {
const arr = s.split('');
const result = arr.reduce((accu, curr)=>{
accu[curr] = (accu[curr] || 0)+1;
return accu;
}, {});
const min = Math.min(...Object.values(result));
const answer = Object.keys(result).filter(key => result[key] === 1);
// 문자열은 sort() 만 해줘도 오름차순으로 정렬됨!!!!잊지말기
return answer.sort().join('');
}
[리트코드] Remove Element (0) | 2023.03.31 |
---|---|
[리트코드] Duplicate Zeros (0) | 2023.03.30 |
[프로그래머스] 구슬을 나누는 경우의 수 (0) | 2022.11.20 |
[프로그래머스] 소인수분해 (0) | 2022.11.17 |
[프로그래머스] 약수 구하기 (0) | 2022.11.04 |
댓글 영역