치춘짱베리굿나이스
[백준] 1764 본문
듣보잡
문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
출력
듣보잡의 수와 그 명단을 사전순으로 출력한다.
풀이
const hear = () => {
let [[n, m], ...arr] = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n")
.map((v) => v.split(" "));
n = Number(n);
m = Number(m);
let obj = {};
let ans = [];
for (let i = 0; i < n; i++) obj[arr[i]] = true;
for (let i = n; i < n + m; i++) if (obj[arr[i]]) ans.push(arr[i]);
console.log(ans.length);
console.log(ans.sort().join("\n"));
};
hear();
반성회
자바스크립트 객체를 사용하면 참 쉬운 문제
- 듣도못한 사람 명단을 돌면서 객체에
key
로 추가한다 - 보도못한 사람 명단을 돌면서 해당 이름이 객체에
key
로 존재하는지 판단하고, 그렇다면 이름이 ‘듣도못한 사람 명단' 에도 있다는 뜻이 된다 - 따라서 그러한 경우의 이름을
ans
에push
하고,ans
의 내용물을 정렬하여 출력한다
해싱 문제가 자바스크립트에선 객체 쓰면 돼서 참 편하다
'Javascript + Typescript > 자바스크립트로 알고리즘풀기' 카테고리의 다른 글
[백준] 15894 (0) | 2022.06.12 |
---|---|
[백준] 14928 (0) | 2022.06.12 |
[백준] 13277 (0) | 2022.06.11 |
[백준] 1932 (0) | 2022.06.11 |
[백준] 11727 (0) | 2022.06.11 |
Comments