IT/Algorithm

프로그래머스) 오픈채팅방

프티 2021. 10. 21. 18:41
반응형

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

 

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

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

programmers.co.kr

처음으로 레벨1이 아닌 레벨2 알고리즘을 풀어보았다!

다행히도 통과하긴 했다.. ㅋㅋ

 

나의 풀이

function solution(record) {
    const object = {};
    
    record.map(sen => sen.split(" ")).forEach(log => log[2] ? object[log[1]] = log[2] : log);
    
    return record.map(sen => sen.split(" "))
        .filter(stat => stat[0] !== "Change")
        .map(log => log[0] === "Enter" ? object[log[1]] + "님이 " + "들어왔습니다." : object[log[1]] + "님이 " + "나갔습니다." );
}

중요하게 생각했던 점은 이용자들의 닉네임이 수시로 업데이트 된다는 것이다.

 

따라서 객체를 만들고 이곳에 유저아이디와 닉네임을 한쌍의 key-value로 저장하였다.

 

이후에 record의 문장을 배열로 쪼갠 뒤에 filter를 활용하여 Change인 배열을 걸러주었다.

다시 메소드 체이닝하여 map으로 상태가 Enter인지, Leave인지에 따라 안내 문장을 만들어 반환하였다.

 

그리고 삼항연산자를 활용하여 코드를 줄여보았다!

반응형