[백준 알고리즘] Node.js 20920. 영단어 암기는 괴로워
2023. 5. 18. 12:00ㆍ코딩연습
1. 문제
https://www.acmicpc.net/problem/20920
20920번: 영단어 암기는 괴로워
첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1 \leq N \leq 100\,000$, $1 \leq M \leq 10$) 둘째 줄부터 $N+1$번째 줄까지 외울 단
www.acmicpc.net
2. 풀이
const inputs = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
const [n,m] = inputs.shift().split(' ').map(Number);
let words = new Map();
for(let i = 0; i < n; i++){
words.set(inputs[i], 0)
}
for(let i = 0; i < n; i++){
words.set(inputs[i], words.get(inputs[i])+1)
}
const sortWords = [...words].sort((a,b) => {
if(a[1] === b[1]) {
if(a[0].length === b[0].length){
return a[0] < b[0] ? -1 : 1
} else {
return b[0].length - a[0].length;
}
} else {
return b[1] - a[1];
}
})
let answer = "";
for(let [key,val] of sortWords){
if(key.length >= m) answer += `${key}\n`
}
console.log(answer)
- map() 메서드 이용하여 해당 단어가 얼마나 나오는지 확인.
- sort() 메서드를 이용하여 주어진 우선순위를 적용.
- 이후 for()문을 이용해서 answer에 출력할 내용 적용.
3. 정리
- 처음에 주어진 우선순위를 적용하지 않아 틀렸고, sort() 메서드에서 많이 헤맸다. 천천히 하나씩 적용하도록 노력해야겠다.
- map() 메서드에 대해서도 알아보도록 해야겠다.
'코딩연습' 카테고리의 다른 글
[백준 알고리즘] Node.js 9461. 파도반 수열 (0) | 2023.06.01 |
---|---|
[백준 알고리즘] Node.js 1149. RGB거리 (0) | 2023.06.01 |
[백준 알고리즘] Node.js 14215. 세 막대 (0) | 2023.05.13 |
[프로그래머스] 카드 뭉치 (0) | 2023.04.12 |
[백준 알고리즘] Node.js 1380. 귀걸이 (0) | 2023.03.30 |