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

SSO·2020년 5월 11일
1

프로그래머스 Lv2

목록 보기
41/46

문제

https://programmers.co.kr/learn/courses/30/lessons/42888

풀이

function solution(record) {
    var answer = [];
    
    //1. 배열 생성
    var newArr = record.map(str=>str.split(" "));
    
    //2. uid와 nickName match 
    // ***Leave인 경우 undefined 고려하기 (예외처리!)
    var nickNameSet = {};
    for(var i=0; i<newArr.length; i++){
        if(newArr[i].length === 3 ){
             nickNameSet[newArr[i][1]] = newArr[i][2];
        }
    }
    
    //3. 출력하기
    for(var i=0; i<newArr.length; i++){
        if(newArr[i][0]==='Enter'){
            answer.push(nickNameSet[newArr[i][1]]+'님이 들어왔습니다.');
        } else if(newArr[i][0]==='Leave'){
            answer.push(nickNameSet[newArr[i][1]]+'님이 나갔습니다.');
        }
      }
    
    return answer;
}

더 생각해보기

다른 사람의 풀이를 보면 가장 끝에 결정되는 nickname만 고려하면 되기 때문에 record를 reverse해야 한다고 하는데, {uid:nickname} 형태의 objext를 이용하는 경우에는 자동적으로 가장 마지막 nickname으로 설정되기 때문에 그런 작업이 필요 없었음.

참고사항

profile
happy

0개의 댓글