본문 바로가기
Problem Solving/카카오 블라인드 기출

2019 - 오픈채팅방

by Libi 2021. 8. 8.
반응형

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

 

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

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

programmers.co.kr

[ 문제풀이 ]

HashMap 자료구조를 사용한다면 쉽게 해결할 수 있는 문제이다.

모든 record를 돌면서 Enter, Leave인 경우 HashMap에 넣어주면서 유저 아이디를 갱신해주고 Enter, Leave인 경우 채팅방 메시지를 유저 아이디와 함께 넣어준다.

이후 정답 리스트를 돌면서 유저 아이디를 갱신된 유저 아이디로 변경해주고 출력해준다.

import java.util.*;

class Solution {
    public String[] solution(String[] record) {
        HashMap<String, String> uid = new HashMap<String, String>();
        ArrayList<String> cmdList = new ArrayList<String>();

        for(String re : record) {
            String[] str = re.split(" ");
            if (str[0].equals("Leave")) {
                cmdList.add(str[1] + ":님이 나갔습니다.");
            } else {
                if (str[0].equals("Enter")) {
                   cmdList.add(str[1] + ":님이 들어왔습니다.");
                }
                //유저 아이디 갱신
                uid.put(str[1], str[2]);
            }
        }

        String[] answer = new String[cmdList.size()];
        for (int i = 0; i < cmdList.size(); ++i) {
            String[] cmd = cmdList.get(i).split(":");
            answer[i] = uid.get(cmd[0]) + cmd[1];
        }
        return answer;
    }
}

 

 

반응형

'Problem Solving > 카카오 블라인드 기출' 카테고리의 다른 글

2019 - 후보키  (0) 2021.08.08
2019 - 실패율  (0) 2021.08.08
2018 - [3차] n진수 게임  (0) 2021.08.07
2018 - [3차] 파일명 정렬  (0) 2021.08.07
2018 - [3차] 자동완성  (0) 2021.08.07

댓글