java 프로그래머스 _오픈채팅방

2021. 5. 5. 01:01프로그래머스 알고리즘/코딩 테스트 문제

반응형

 

출제 링크 : programmers.co.kr/learn/courses/30/lessons/42888

 

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

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

programmers.co.kr

 


import java.util.*;
class Solution {

	public static Map<String, String> userList = new HashMap<String, String>();
	public static Queue<String> inOutQueue = new ArrayDeque<String>();
	public static Queue<String> uidQueue = new ArrayDeque<String>();

	public String[] solution(String[] record) {
		List<String> answer = new ArrayList<>();

		// 회원 가입
		for (String cord : record) {
			String[] temp = cord.split(" ");
			if (!temp[0].equals("Leave")) {
				signIn(temp[1], temp[2]);
			}

			if (!temp[0].equals("Change")) {
				inOutQueue.add(temp[0]);
				uidQueue.add(temp[1]);
			}
		}

		// 출입명부
		while (!inOutQueue.isEmpty()) {
			String inOut = inOutQueue.poll();
			String nickName = userList.get(uidQueue.poll());
//			System.out.println(inOut);
//			System.out.println(nickName);
			switch (inOut) {
			case "Enter":
				answer.add(nickName + "님이 들어왔습니다.");
				break;
			case "Leave":
				answer.add(nickName + "님이 나갔습니다.");
				break;
			}
		}

		return answer.toArray(new String[answer.size()]);
	}

	// 회원가입
	private void signIn(String uid, String nickName) {
		userList.put(uid, nickName);
	}
}

 

 

반응형