출처 : 프로그래머스 코딩테스트 연습 - 2018 KAKAO BLIND RECRUITMENT - 오픈채팅방
https://programmers.co.kr/learn/courses/30/lessons/42888
코딩테스트 연습 - 오픈채팅방
오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오
programmers.co.kr
❌ Solution ( 정확성 6.3)
function solution(record) {
let answer = [];
const users = [];
for( let i = 0; i < record.length; i++) {
let arr = record[i].split(' ')
if( arr[0] === 'Enter') {
users.push({ uuid: arr[1], id: arr[2]})
} else if (arr[0] === 'Leave') {
for( let j = 0; j < users.length; j++) {
if (users[j]['uuid'] === arr[1]) {
users.splice(j, 1)
}
}
} else if( arr[0] === 'Change') {
for( let j = 0; j < users.length; j++) {
if (users[j]['uuid'] === arr[1]) {
users[j]['id'] = arr[2];
}
}
}
}
for(let i = 0; i < record.length; i++) {
let arr = record[i].split(' ')
if( arr[0] === 'Enter') {
for( let j = 0; j < users.length; j++) {
if (users[j]['uuid'] === arr[1]) {
answer.push(users[j]['id'] + "님이 들어왔습니다.")
}
}
} else if (arr[0] === 'Leave') {
for( let j = 0; j < users.length; j++) {
if (users[j]['uuid'] === arr[1]) {
answer.push(users[j]['id'] + "님이 나갔습니다.")
}
}
}
}
return answer;
}
✅ Solution ( https://kis6473.tistory.com/ 님 코드 )
function solution(record) {
let answer = [];
const map = new Map();
for (let i = 0; i < record.length; ++i) {
const [state, uid, name] = record[i].split(' ');
if (state == 'Leave') {
answer.push([uid, '님이 나갔습니다.']);
continue;
}
if (state == 'Enter') {
answer.push([uid, '님이 들어왔습니다.']);
}
map.set(uid, name);
}
return answer.map(ele => map.get(ele[0]) + ele[1]);
}
참고
프로그래머스 - 오픈채팅방 (javascript)
오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오
kis6473.tistory.com
'알고리즘' 카테고리의 다른 글
백준 JS | 11729번 하노이 탑 이동 순서 (0) | 2022.07.07 |
---|---|
프로그래머스 JS | 행렬 테두리 회전하기 (0) | 2022.07.06 |
프로그래머스 JS | [1차] 다트게임 (0) | 2022.06.30 |
프로그래머스 JS | 이상한 문자 만들기 (0) | 2022.06.29 |
프로그래머스 JS | 실패율 (0) | 2022.06.27 |