본문 바로가기
Problem Solving

[프로그래머스] L2. 오픈채팅방 / 2019 카카오 블라인드 채용

by JYHAN 2020. 12. 10.

카카오

[프로그래머스] L2. 오픈채팅방 / 2019 카카오 블라인드 채용

[풀이] 

  1. 파싱으로 입력/출력 문자열 처리
  2. HashMap을 사용하여 해당하는 아이디(key)에 새/변경된 닉네임(value) 저장
  3. 아이디 + 들어왔습니다(I)/나갔습니다(O) 의 형태로 새롭게 저장 ex) uid1234/I or uid1234/O
  4. 해당하는 idkey값으로 value를 찾은 후 출력 양식에 맞게 저장 후 리턴
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.util.*;
class Solution {
    public String[] solution(String[] record) {
        Map<StringString> info = new HashMap<StringString>();
        List<String> print = new ArrayList<String>();
        for(int i=0; i<record.length; i++){
            String[] strArr = record[i].split(" ");
            String command = strArr[0];
            String uid = strArr[1];
            
            if(command.equals("Enter")){
                print.add(uid+"/I"); // id/I
                info.put(uid, strArr[2]); // 새 닉네임 저장
            }else if(command.equals("Leave")){
                print.add(uid+"/O"); // id/O
            }else// change
                info.put(uid, strArr[2]); // 변경된 닉네임 저장
            }
        }
        String[] answer = new String[print.size()];
        for(int i=0; i<print.size(); i++){
            String[] strArr = print.get(i).split("/");
            String uid = strArr[0];
            String command = strArr[1];
            if(command.equals("O")){
                answer[i] = info.get(uid)+"님이 나갔습니다.";
            }else{
                answer[i] = info.get(uid)+"님이 들어왔습니다.";
            }
        }
        return answer;
    }
}
cs

댓글