📍문제 링크
https://www.acmicpc.net/problem/20291
📍알고리즘 분류
- 자료구조
- 문자열
- 정렬
- 해시를 사용한 집합과 맵
- 파싱
📍문제 풀이
- 파일 명에서 확장자를 골라 몇개가 있는지 갯수와 함께 출력
📍의사 코드
1. 주어진 데이터를 순회하며 . 으로 split
2. 해시 맵에 확장자가 있으면 +1, 없으면 1
3. 마지막에 완성된 객체를 순회하며 형식에 맞게 출
📍코드 (JavaScript)
const [in1, ...in2] = require('fs')
.readFileSync('/dev/stdin')
.toString()
.trim()
.split('\n');
const obj = {};
const answer = [];
for (let el of in2) {
const [fileName, format] = el.split('.');
obj[format] ? obj[format]++ : (obj[format] = 1);
}
const formatArr = Object.keys(obj).sort();
for (let format of formatArr) {
answer.push(`${format} ${obj[format]}`);
}
console.log(answer.join('\n'));
📍리뷰
- 정렬 때문에 시간 복잡도가 O(n log n) 으로 추측