알고리즘/프로그래머스

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

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

 

코딩테스트 연습 - 오픈채팅방

오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오

programmers.co.kr

1. 알고리즘 유형

Map

 

2. 자료구조

리스트, 딕셔너리

 

3. 풀이

 

Enter, Leave, Change에 따라 구분

1) [명령어, uid] 형식으로 리스트에 저장

 

uid에 따른 이름 저장

1) 딕셔너리에 {uid: 이름} 형식으로 저장

 

출력 기능

1) 리스트의 첫 단어(Enter, Leave)로 출력값 구분

2) 리스트의 두번째 단어로 이름 구분

 

풀이

def solution(records):
    answer = []
    cmds = []
    uids = {}
    for record in records:
        rec = list(record.split())
        if rec[0] == "Enter":
            cmds.append([rec[0], rec[1]])
            uids[rec[1]] = rec[2]
        elif rec[0] == "Leave":
            cmds.append([rec[0], rec[1]])
        else:
            uids[rec[1]] = rec[2]
    for cmd in cmds:
        if cmd[0]=="Enter":
            string = uids[cmd[1]]+"님이 들어왔습니다."
            answer.append(string)
        else:
            string = uids[cmd[1]]+"님이 나갔습니다."
            answer.append(string)
    return answer

 

자바

import java.util.*;
class Solution {
    public String[] solution(String[] records) {  
        HashMap<String, String> table = new HashMap<>();
        for(String record: records){
            String items[] = record.split(" ");
            if(items[0].equals("Enter") || items[0].equals("Change")){
                table.put(items[1], items[2]);
            }
        }
        String[] answer = {};
        ArrayList<String> list = new ArrayList<>();
        for(String record: records){
            String items[] = record.split(" ");
            if(items[0].equals("Enter")){
                list.add(table.get(items[1])+"님이 들어왔습니다.");
            }else if(items[0].equals("Leave")){
                list.add(table.get(items[1])+"님이 나갔습니다.");
            }
        }
        answer=list.toArray(new String[list.size()]);
        return answer;
    }
}

 

배운점

list -> array로 바꾸는 라이브러리

toArray()