본문 바로가기

Algorithms/Coding Test Practice

[Java] 2019 카카오 공채 코딩테스트 문제 : 오픈채팅방(HashMap)

--- 문제 ---

오픈채팅방

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

신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다.

"[닉네임]님이 들어왔습니다."

채팅방에서 누군가 나가면 다음 메시지가 출력된다.

"[닉네임]님이 나갔습니다."

채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다.

  • 채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다.
  • 채팅방에서 닉네임을 변경한다.
    •  

입출력 예

["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"] ["Prodo님이 들어왔습니다.", "Ryan님이 들어왔습니다.", "Prodo님이 나갔습니다.", "Prodo님이 들어왔습니다."]

 

 

--- 코드 ---

import java.util.Arrays;
import java.util.HashMap;

public class Kakao2019_01 {

	public static void main(String[] args) {
		String[] record = new String[]{"Enter uid1234 Muzi", "Enter uid4567 Prodo",
				"Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"};
                
		String[] answer = solution(record);
		
		System.out.println(Arrays.toString(answer));
		
		
	}
	
	public static String[] solution(String[] record) {
        String[] answer = {};
        HashMap<String,String> users = new HashMap<String,String>();//HashMap생성
        int cnt = 0;
        for(String r : record) {
			
			String[] details = r.split(" ");
			switch(details[0]) {
			case "Leave":
				++cnt;
				break;
			case "Enter":
				++cnt;
				users.put(details[1], details[2]);
				break;
			default:
				users.put(details[1], details[2]);
				break;
			}
			
		}
		answer = new String[cnt];
		cnt = 0;
		for(String r : record) {
			String[] details = r.split(" ");
			switch(details[0]) {
			case "Change":
				break;
			case "Enter":
				// Prodo님이 들어왔습니다.
				answer[cnt++]=users.get(details[1])+"님이 들어왔습니다.";
				break;
			case "Leave":
				// Prodo님이 나갔습니다.
				answer[cnt++]=users.get(details[1])+"님이 나갔습니다.";
				
			}
		}
		
		
        return answer;
    }

}

 

 

--- 출처 ----

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

 

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

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

programmers.co.kr

 

반응형