delpho

[level1] 2019 kakao blind recruitment 오픈채팅방 본문

알고리즘/구현

[level1] 2019 kakao blind recruitment 오픈채팅방

delpho 2022. 6. 3. 02:28

문제 자체는 어렵지 않았는데 어떤 방식으로 풀어야할지 고민했던 문제!

어떤 자료구조를 써야할지 고민했는데, 결국 다른 블로그를 참고했다.

 

Map은 Key가 중복되서 put이 되면 마지막에 들어온 value가 저장되는 점을 활용했다.

여기서, key에 uid값을, value에는 닉네임을 저장한다!

LinkedList를 이용하여 일단은 채팅로그를 그대로 남긴다.

 

그 후, LinkedList의 값을 하나씩 빼서 "님"의 idx값을 알아낸 후 그 앞의 uid를 얻어온다.

얻어온 uid값을 활용하여 Map에 있는 닉네임을 얻어와 닉네임을 변경한 후, answer에 idx를 증가시키며 저장!

 

 

 

import java.util.*;

class Solution {
    public String[] solution(String[] record) {
        
        
        Map<String, String> nicknameMap = new HashMap<>();
        List<String> chat = new LinkedList<>();
        
        for(String info : record){
            StringTokenizer st = new StringTokenizer(info);
            String condition = st.nextToken();
            String uid = st.nextToken();
            String nickname = "";
            
            if(st.hasMoreTokens()){
                nickname = st.nextToken();
            }
            
            if(condition.equals("Enter")){
                nicknameMap.put(uid, nickname);
                chat.add(uid + "님이 들어왔습니다.");
            }else if(condition.equals("Change")){
                nicknameMap.put(uid, nickname);
            }else{
                chat.add(uid + "님이 나갔습니다.");
            }
        }
        
        String[] answer = new String[chat.size()];
        int idx = 0;
        
        for(String c : chat){
            int uidEndIdx = c.indexOf("님");
            String uidTemp = c.substring(0, uidEndIdx);
            
            String lastUid = nicknameMap.get(uidTemp);
            if(lastUid != null){
                
                answer[idx++] = c.replace(uidTemp, lastUid);
            }else{
                answer[idx++] = c;
            }
            
        }
        
        
        
        return answer;
    }
}

 

 

https://velog.io/@hyeon930/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%98%A4%ED%94%88%EC%B1%84%ED%8C%85%EB%B0%A9-Java