백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 10546 , 배부른 마라토너
✔️Check Point ! ( 해당사항 ✓체크 )
1. 막힘 없이 수월하게 풀린 문제인가?
2. 1시간이내로 풀렸던 문제인가?
3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?
4. 시간을 써도 도무지 풀 수 없는 문제인가?
5. 솔루션을 찾아봤는가?
-------------------------------------------------------------------------------------------
난이도 체감 🧑💻
1. 최상
2. 상
3. 중
4. 하
이해도 🙆♂️
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함
덧붙일 말 🏷️
동명이인이 있을 수 있다는 것에 주의
문제 출처 🏠
https://www.acmicpc.net/problem/10546
요구사항 📋
완주하지 못한 참가자 이름 출력.
N개의 참가자 입력이 주어지고, N-1개의 완주자 입력이 주어짐.
완주하지 못한, 한명의 이름을 찾으시오.
주의. 동명이인 있을 수 있음.
해결 전략 📝
우선, dict 를 사용했다. 동명이인이 있을 수도 있으니 몇명인지 카운트도 필요하니 dict 를 사용하기 적합하다.
우선 참가자들의 인원을 dict에 +1 해서 저장하고, 완주자 들을 dict에서 -1 해서 빼준다.
이 문제는 단 한명만이 완주를 못하기 때문에 한명의 value 값 이외의 나머지 인원의 value 값이 0으로 초기화 되어있을 것이다.
그러면, 반대로 나머지 한명의 value 값이 0이 아니라면 그 사람이 완주를 못하는 것이니, value 값이 1인 사람의 이름을 return 시키면 된다.
정답 💯
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n")
.map((v) => v.trim());
const [T, ...LIST] = input;
function solution(T, LIST) {
let dict = {};
for (let i = 0; i < T; i++) {
if (dict[LIST[i]]) dict[LIST[i]] += 1;
else dict[LIST[i]] = 1;
}
LIST = LIST.splice(T);
LIST.map((v) => (dict[v] -= 1));
for (let key in dict) if (dict[key] === 1) return key;
}
console.log(solution(Number(T), LIST));
반응형
'알고리즘 공부 > 백준 - 자바스크립트' 카테고리의 다른 글
백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 9934 , 완전 이진 트리 (0) | 2022.10.25 |
---|---|
백준/ Silver 5 문제 , 백준 Node.js 자바스크립트 14929 , 귀찮아 (SIB) (0) | 2022.10.24 |
백준/ Gold 5 문제 , 백준 Node.js 자바스크립트 2800 , 괄호 제거 [자료구조, 스택] (0) | 2022.10.21 |
백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 2504 , 괄호의 값[자료구조, 스택] (0) | 2022.10.21 |
백준/ Silver 2 문제 , 백준 Node.js 자바스크립트 4358 , 생태학 [자료구조, 스택] (0) | 2022.10.21 |