https://school.programmers.co.kr/learn/courses/30/lessons/42888
문제 접근
- record를 순회하면서 상태(입장/퇴장)를 확인한다.
- map을 사용해 id => nickname 쌍을 업데이트 한다.
- 퇴장(Leave)할땐 제외한다.(nickname변화 없으므로)
- 그 다음 record 반복을 다시 돌면서 map객체의 id 값(nickname)과 문자열을 result에 추가한다.
function solution(record) {
const recordMap = new Map();
const result = [];
for (ele of record){
let [state, id, nickname] = ele.split(' ');
if (state !== 'Leave'){
recordMap.set(id,nickname)
}
}
for(let i=0;i<record.length;i++){
const [state, id, nickname] = record[i].split(' ')
if (state === 'Enter'){
result.push(`${recordMap.get(id)}님이 들어왔습니다.`)
} else if((state === 'Leave')){
result.push(`${recordMap.get(id)}님이 나갔습니다.`)
}
}
return result
}
배운점
Object vs Map
- Object
- key : 문자열 또는 심벌 값, 중복된 값 X
- 이터러블 하지 않음.
- 요소 개수 확인 시 Object.keys(obj).length
- Map
- key : 객체를 포함한 모든 값, 중복된 값 X
- 이터러블 함
- 요소 개수 확인 시 map.size
'algorithm > programmers' 카테고리의 다른 글
[JS ] 3차 방금그곡 (2) | 2023.10.24 |
---|---|
[JS] 전력망 둘로 나누기 -bfs (0) | 2023.10.24 |
[PYTHON/파이썬] Level2 [1차]캐시 - LRU/deque/maxlen (0) | 2023.02.18 |
[PYTHON/파이썬] level 2 괄호회전하기 - deque (0) | 2023.02.18 |
[PYTHON/파이썬] Level2 행렬의 곱셈 - 3중 for문 / zip (0) | 2023.02.09 |
댓글