(Python, Java) 프로그래머스 - 오픈채팅방

[문제 링크]

Python 풀이

def solution(record):
    answer = []
    nickname = dict()
    for datas in record:
        data = datas.split()
        if data[0] != "Leave":
            nickname[data[1]] = data[2]

    for datas in record:
        data = datas.split()
        if data[0] == "Enter":
            answer.append(nickname.get(data[1]) + "님이 들어왔습니다.")
        elif data[0] == "Leave":
            answer.append(nickname.get(data[1]) + "님이 나갔습니다.")

    return answer

딕셔너리 사용법만 알고 있다면 쉽게 풀 수 있다.

Java 풀이

class Solution {
    public String[] solution(String[] record) {

        HashMap<String, String> map = new HashMap<>();
        final String IN = "님이 들어왔습니다.";
        final String OUT = "님이 나갔습니다.";

        for (String logs : record) {
            String[] log = logs.split(" ");
            String move = log[0];
            String id = log[1];

            if (!move.equals("Leave")) {
                String nickname = log[2];
                map.put(id, nickname);
            }
        }

        List<String> answer = new ArrayList<>();
        for (String logs : record) {
            String[] log = logs.split(" ");
            String move = log[0];
            String id = log[1];

            if (move.equals("Enter")) {
                answer.add(map.get(id) + IN);
            } else if (move.equals("Leave")) {
                answer.add(map.get(id) + OUT);
            }
        }

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

© 2021. By Backtony