본문 바로가기

⏳ 알고리즘/JavaScript 알고리즘

프로그래머스 - LV2. 오픈채팅방(카카오 2019 블라인드 채용)

문제

https://programmers.co.kr/learn/courses/30/lessons/42888?language=javascript 

 

코딩테스트 연습 - 오픈채팅방

오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오

programmers.co.kr

 

코드

1) 딕셔너리 이용

function solution(record) {
    let answer = []
    let dict_nickname = {}
    
    for (let i=0; i<record.length; i++) {
        record[i] = record[i].split(' ')
        if (record[i][0] === "Enter" || record[i][0] === "Change") {
            dict_nickname[record[i][1]] = record[i][2]
        }
        
    }
    
    for (let i=0; i<record.length; i++) {
        if (record[i][0] === "Enter") {
            answer.push(dict_nickname[record[i][1]]+"님이 들어왔습니다.")
        }
        if (record[i][0] === "Leave") {
            answer.push(dict_nickname[record[i][1]]+"님이 나갔습니다.")
        }
    }
    
    return answer
}

 

2) 딕셔너리, foreach이용

function solution(record) {
    let answer = []
    let nicknameDict = {}
    let stateMap = {
        "Enter" : "님이 들어왔습니다.",
        "Leave" : "님이 나갔습니다."
    }
    record.forEach((r) => {
        r = r.split(' ')
        if (r[0] === "Enter" || r[0] === "Change") {
            nicknameDict[r[1]] = r[2]
        }
    });
    
    record.forEach((r) => {
        r = r.split(' ')
        if (r[0] in stateMap) {
            answer.push(nicknameDict[r[1]]+stateMap[r[0]])
        }
    });
    
    return answer
}