난이도: Lv. 2
정답률: 57%
문제: https://school.programmers.co.kr/learn/courses/30/lessons/42888
알고리즘
1. uid별 닉네임을 Object에 저장한다.
2. 1.에 저장되어 있는 닉네임으로 출입 기록에 따른 메시지를 저장한다.
코드
function solution(record) {
let answer = [];
const uidName = {};
for (let r of record) {
const splitArr = r.split(' ');
if (splitArr[0] !== "Leave") {
uidName[splitArr[1]] = splitArr[2];
}
}
for (let r of record) {
const splitArr = r.split(' ');
if (splitArr[0] === "Enter") {
answer.push(`${uidName[splitArr[1]]}님이 들어왔습니다.`);
} else if (splitArr[0] === "Leave") {
answer.push(`${uidName[splitArr[1]]}님이 나갔습니다.`);
}
}
return answer;
}
주저리
순회 두 번하면 시간초과 나는 문제들을 겪다 보니 이 문제도 그런가 해서 가만히 생각해 보다가 마지막에 닉네임을 바꾸는 경우도 있기 때문에 그냥 순회 두 번 해서 풀었는데 쉽게 통과했다. Object를 쓰긴 했지만 Hash를 써도 되긴 하겠는데 Object가 코드 알아보기 더 쉬운 것 같다.
'코딩테스트' 카테고리의 다른 글
[JS] 파일명 정렬 (0) | 2024.01.17 |
---|---|
[JS] 롤케이크 자르기 (0) | 2024.01.12 |
[JS] 스킬트리 (0) | 2024.01.10 |
[JS] 땅따먹기 (0) | 2024.01.09 |
[JS] 주식 가격 (0) | 2024.01.08 |