코딩테스트

[프로그래머스] 오픈채팅방 (JS)

여유로운 프론트엔드 개발자 2024. 8. 20. 15:10

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

채팅방에서 닉네임을 변경하는 방법은 아래와 같이 두 가지가 있다.

  (1) 채팅방을 나간 후 새로운 닉네임으로 다시 들어간다

  (2) 채팅방에서 닉네임을 변경한다.

 

그러므로 행동이 Enter or Change인 케이스에서 가장 최신 상태의 유저의 아이디와 이름을 매칭시켜 userInfo에 보관한다.

최종적으로 userInfo로 접근해서 case에 맞게 답을 만들면 된다.

function solution(record) {
    const answer = [];
    const userArr = [];
    const userInfo = {};
    
    record.map(chat => {
        const behavior = chat.split(" ")[0];
        const userId = chat.split(" ")[1];
        const userName = chat.split(" ")[2];
        
        if (behavior !== "Leave") { // 가장 최신상태 유저의 아이디, 이름 매칭
            userInfo[userId] = userName;
        }
        userArr.push([behavior, userId]);
    })
    
    userArr.map(user => {
        if (user[0] === "Enter") { 
            answer.push(`${userInfo[user[1]]}님이 들어왔습니다.`)
        } else if (user[0] === "Leave") {
            answer.push(`${userInfo[user[1]]}님이 나갔습니다.`)
        }
    })
    
    return answer;
}

 

결론

레벨2의 카카오 문제이다.

들어왔습니다와 나갔습니다 2가지 케이스만 보여주면 되기 때문에 지문을 꼼꼼하게 읽으면 쉽게 풀 수 있는 문제이다