STUDY/Algorithm

[프로그래머스] 오픈채팅방, 2019 KAKAO BLIND RECRUITMENT, python

sinawi95 2021. 6. 21. 15:36
728x90

https://programmers.co.kr/learn/courses/30/lessons/42888?language=python3 

 

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

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

programmers.co.kr

def solution(record):
    answer = []
    answer_tmp = []
    user_dict = {}
    for r in record:
        tmp = r.split()
        # answer_tmp = (uid, command)
        if r[0] == 'C' or r[0] == 'E':
            user_dict[tmp[1]] = tmp[2]
        answer_tmp.append((tmp[1], tmp[0]))
        
    # print(user_dict)
    # print(answer_tmp)
    for uid, command in answer_tmp:
        if command[0] == "E":
            answer.append('{}님이 들어왔습니다.'.format(user_dict[uid]))
        elif command[0] == "L":
            answer.append('{}님이 나갔습니다.'.format(user_dict[uid]))
        
    
    return answer

 

카카오나 네이버 등 웹 개발자가 있는 곳들은 문자열 처리 문제가 많이 나온다.

언뜻 보기엔 쉬워보이지만 잘못짜는 순간 시간초과가 계속 나서 멘탈이 흔들릴수 있는 문제이다.

이런 문제를 풀땐 중첩 반복문을 최대한 제거하고 해시(딕셔너리)를 사용해서 시간을 줄이는게 좋다.