프로그래머스 : 오픈채팅방
https://programmers.co.kr/learn/courses/30/lessons/42888
문제풀이
이번 문제는 2019 카카오 블라인드 채용 관련 코딩테스트 문제이며, hash map을 적용하는 풀이입니다.
value가 아무리 바뀌고 중복되더라도 고유한 key 값을 가지고 있으면 찾아낼 수 있습니다. 이 문제에서는 유저 아이디가 key가 되고, 닉네임이 value가 되겠군요.
코드
function solution(record) {
let answer = [], mapSet= {};
const tmp = record.map(elem => elem.split(' '));
// 문자열로 된 배열의 요소를 ' ' 로 찢어 각각 다른 배열요소로 만들어 tmp에 담는다
// record가 ["apple banana","book cola"] 라면, [[apple,banana],[book,cola]]
for(let i=0; i<tmp.length; i++)
if(tmp[i].length === 3) // tmp 배열 요소의 길이 3은 Enter, Change에 해당
mapSet[tmp[i][1]] = tmp[i][2]; // 해당 아이디에 닉네임을 적용
for(let i=0; i<tmp.length; i++){
if(tmp[i][0] === 'Enter') answer.push(`${mapSet[tmp[i][1]]}님이 들어왔습니다.`);
else if(tmp[i][0] === 'Leave') answer.push(`${mapSet[tmp[i][1]]}님이 나갔습니다.`);
}
console.log(mapSet);
return answer;
}
리뷰
문자열을 분리하여 유저아이디에 닉네임을 연결시킬 수 있다면 크게 어렵지 않았던 문제였습니다~
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
튜플 / js 풀이 (0) | 2021.08.02 |
---|---|
네트워크 / js 풀이 (0) | 2021.07.26 |
타겟 넘버 / js 풀이 (0) | 2021.07.08 |
크레인 인형뽑기 게임 / js 풀이 (0) | 2021.07.07 |
키패드 누르기 / js 풀이 (0) | 2021.07.02 |