코딩연습
[백준 알고리즘] 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() 메서드에 대해서도 알아보도록 해야겠다.