새로운 블로그로 이전 작업을 진행하고 있어 포스트가 새로 작성되고 있지 않습니다.

빠른 시일 내에 새로운 블로그로 인사드리겠습니다.

새로운 블로그 : https://unho.vercel.app/

본문 바로가기
알고리즘 문제풀이/JavaScript

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

by 언호 2022. 5. 5.

📖 문제


🧑🏻‍💻 풀이 과정

1) 문제 접근 및 이해

유저들의 기록에 대해서 forEach 를 이용하여 입장과 퇴장, 이름 변경에 대해 구분하여 로직을 수행하였습니다.

유저 아이디를 키값으로 갖고, 유저 이름을 값으로 하는 객체를 생성하여 관리하였습니다.

 

이후 로그를 map 을 이용하여 반복하였고, 유저 아이디를 유저 이름으로 변경하였습니다.

2) 알고리즘

  • 문자열

3) 풀이 코드

사용 언어 - JavaScript

function solution(record) {
    let answer = [];                                    // 정답 리스트
    let logs = [];                                      // 들어가거나 나간 로그 기록들
    let user = {};                                      // 유저 아이디 정보, 유저아이디: 이름
    
    record.forEach(v => { 
        let splited = v.split(' ');                     // 띄어쓰기로 구분
        
        if (splited[0] === 'Enter') {                   // 들어온 경우, 유저 아이디와 이름을 기록하고 로그도 기록
            user[splited[1]] = splited[2]               
            logs.push([splited[1], '님이 들어왔습니다.'])
        } else if (splited[0] === 'Leave') {            // 나간 경우, 나간 기록 로그에 기록
            logs.push([splited[1], '님이 나갔습니다.'])
        } else {                                        // 이름 변경한 경우, 객체에서 이름 변경
            user[splited[1]] = splited[2]
        }
    })
    
    answer = logs.map(v => {        // 로그를 반복
        v[0] = user[v[0]]           // 유저 아이디를 이름으로 변경
        return v.join('')           // 문자열로 합쳐서 반환
    })
    
    return answer;
}

🔗 문제 링크

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

 

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

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

programmers.co.kr

 

 

※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다

댓글