본문 바로가기

Algorithm

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

반응형

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

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

문제 접근

HashMap을 이용해서 유저아이디와 닉네임을 저장하고
list에 유저 아이디와 Enter or Leave를 저장한 후에 메세지를 출력할 때 유저 아이디와 닉네임을 매칭해서 메세지를 생성하였다.

Code

import java.util.HashMap;
import java.util.ArrayList;
class Solution {
    public String[] solution(String[] records) {
        String[] answer;
        HashMap<String, String> users = new HashMap<>();
        ArrayList<String> messages = new ArrayList<>();
        for(String record: records){
        //record 입력
            String[] token = record.split(" ");
            String command = token[0];
            String uid = token[1];
            if(command.equals("Enter")){
                String nickname = token[2];
                users.put(uid,nickname);
                messages.add(uid + " Enter");
            } else if(command.equals("Change")){
                String nickname = token[2];
                users.put(uid,nickname);
            }
            else if(command.equals("Leave")){
                messages.add(uid + " Leave");
            }
        }
        answer = new String[messages.size()];
        // 메세지 출력
        for(int i = 0; i<messages.size(); i++){
            String[] message = messages.get(i).split(" ");
            String username = users.get(message[0]);
            if(message[1].equals("Enter")){
                answer[i] = username + "님이 들어왔습니다.";
            } else {
                answer[i] = username + "님이 나갔습니다.";
            }
        }
        return answer;
    }
}
반응형