문제 링크
https://www.acmicpc.net/problem/3052
답안
const fs = require('fs')
const input = fs.readFileSync('/dev/stdin').toString().trim().split("\n").map(Number)
function solution(input) {
const map = new Map()
for (let i = 0; i < input.length; i++) {
const key = input[i] % 42
if (map.has(key) === false) {
map.set(input[i] % 42, true)
}
}
return map.size
}
console.log(solution(input))
- map을 이용하여 문제를 풀어보았다.
- map은 자체적으로 해쉬 자료구조가 내장되어있어 문제를 풀 때 좀 더 빠른 접근이 가능하다고 한다.
- 주어진 input값을 parse하여 42로 나눈 나머지를 구한 뒤, 서로 다른 나머지 값이 몇개인지 구하는 문제이다.
- 따라서, 나눈 값을 자료구조 내부에 넣고 비교를 해야하는데, 그것을 Map 자료형을 이용한 것이다
Map 자료형
- new Map() - 맵을 만듦
- map.set(key, value) - key를 이용해 value를 저장함
- map.get(key) - key에 해당하는 값을 반환하고, key가 존재하지 않으면 undefined를 반환함
- map.has(key) - key가 존재하면 true, 존재하지 않으면 false를 반환함
- map.delete(key) - key에 해당하는 값을 삭제함
- map.clear() - 맵 안의 모든 요소를 제거함
- map.size - 요소의 개수를 반환함
'코테 문제 풀이' 카테고리의 다른 글
[백준 1065] 한수 (Node.js) (0) | 2023.01.31 |
---|---|
[백준 4673] 셀프 넘버 (Node.js) (0) | 2023.01.30 |
[백준 1000] A + B (Node.js) (0) | 2023.01.13 |
[레벨 0] k의 개수 (이중 for문, split, Array 메서드체이닝) (0) | 2023.01.11 |
[레벨 0] 팩토리얼 (헬퍼함수, while) (0) | 2023.01.10 |