프로그래머스Lv2 - 오픈채팅방

요리하는코더·2021년 8월 26일
0

알고리즘 - 문제

목록 보기
18/48
post-thumbnail

코드

function solution(record) {
    var answer = [];
    
    const obj = {};
    record.map((r) => {
        const arr = r.split(' ')
        if(arr[0] === 'Enter') {
            obj[arr[1]] = arr[2];
            answer.push(`${arr[1]}님이 들어왔습니다.`);
        } else if(arr[0] === 'Leave'){
            answer.push(`${arr[1]}님이 나갔습니다.`);
        } else if(arr[0] === 'Change') {
            obj[arr[1]] = arr[2];
        }
    })
    
    answer = answer.map((a) => {
            const arr = a.split('님')
            a = `${obj[arr[0]]}${arr[1]}`;
            return a;
    })
    
    return answer;
}

풀이 및 소감

먼저 split을 활용해서 공백을 기준으로 잘라주었다. 그리고 EnterLeave, Change에 따라서 각각 처리를 했는데 Javascript의 Object는 복사를 할 때 얕은 복사를 해서 그 방식을 활용할 수 있지 않을까 했는데 답은 배열로 return해 줘야해서 약간 생각을 바꿨다. obj의 키가 같으면 마지막에 바뀌는 값이 들어가고 그 값으로 마지막에 대입을 해주는 방식으로 해결을 했는데 const arr = a.split('님') 부분이 마음에 안든다..ㅠ 한글을 이용해 자르기도 했고 Enter와 같은 상태도 object를 사용했으면 좀 더 깔끔하게 해결할 수 있었을 거 같다.

profile
요리 좋아하는 코린이

0개의 댓글