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

Jaedeok Lee·2021년 7월 17일
0

프로그래머스

목록 보기
3/4
post-thumbnail

📃 문제 링크

2019 KAKAO BLIND RECRUITMENT > 오픈채팅방

✍ 풀이

💻 코드

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

class Solution {
    public String[] solution(String[] record) {
        ArrayList<String> answer = new ArrayList<>();
        String[][] temp = new String[record.length][];
        Map<String, String> uidName = new HashMap<>();

        // 2차원 배열에 각 문자열을 삽입하면서 uid에 name을 매핑
        for(int i=0; i<record.length; i++){
            temp[i] = record[i].split(" ");
            
            if(temp[i][0].equals("Enter"))
                uidName.put(temp[i][1], temp[i][2]);
            else if(temp[i][0].equals("Change"))
                uidName.replace(temp[i][1], temp[i][2]);
        }

        for(int i=0; i<record.length; i++){
            if(temp[i][0].equals("Enter"))
                answer.add(uidName.get(temp[i][1])+"님이 들어왔습니다.");


            else if(temp[i][0].equals("Leave"))
                answer.add(uidName.get(temp[i][1])+"님이 나갔습니다.");
        }

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

📑 풀이 설명

첫번째 for문에서는 입력받은 record를 쪼개서 2차원 배열에 넣는 동시에 uid와 name을 매핑해준다. 이때 Leave를 제외한 Enter과 Change에 대해서만 매핑한다. (leave는 uid에 매핑된 name을 바꾸지 않으므로)

두번째 for에서는 첫번째 for문에서 저장해놓은 2차원 배열과 매핑시켜놓은 uid를 이용해서 문자열을 만들어 answer에 차례대로 넣는다. 모두 넣은 후에는 answer을 배열로 만들고 반환해준다.

profile
서버 개발자

0개의 댓글