[코딩테스트] 오픈채팅방

프로그래머스 코딩 테스트 준비
https://programmers.co.kr/learn/courses/30/lessons/42888
문제 설명은 다음 사이트에서 확인 할 수 있다.

오늘부터는 프로그래머스 레벨 2 코드들을 풀이할 예정이다.

< 내가 작성한 코드 >

def solution(record):
    answer = []
    dict = {}
    str = ''

    for line in record :
        line_split = line.split() # enter uid1234 muzi 0,1,2 배열 생성
        if line_split[0] == "Enter" or line_split[0] == "Change" :
            dict[line_split[1]] = line_split[2] # uid1234,muzi

    for line in record :
        line_split = line.split()
        if line_split[0] == "Enter" :
            str += dict[line_split[1]] + "님이 들어왔습니다."
            answer.append(str)
        elif line_split[0] == "Leave" :
            str += dict[line_split[1]] + "님이 나갔습니다."
            answer.append(str)
        str = ''

    return answer

< 다른 사람이 풀이한 코드 >

def solution2(record):
    answer = []
    namespace = {}
    printer = {'Enter':'님이 들어왔습니다.', 'Leave':'님이 나갔습니다.'}
    for r in record:
        print(r)
        rr = r.split(' ')
        print(rr,"?")
        if rr[0] in ['Enter', 'Change']:
            namespace[rr[1]] = rr[2]
    print(namespace,"a")
    for r in record:
        if r.split(' ')[0] != 'Change':
            answer.append(namespace[r.split(' ')[1]] + printer[r.split(' ')[0]])

    return answer

🧑🏻 후기

split함수와 문자열 딕셔너리를 통해 쉽게 해결 할 수 있었다.

이런식으로 활용 할 수 있다.

dict[line_split[1]] = line_split[2]
이런식으로 저장하면
{'uid1234': 'Prodo', 'uid4567': 'Ryan'}
딕셔너리는 다음과 같이 저장되게 된다.
이를 이용하여 마지막에 업데이트된 고유 uid에 따른 닉네임 값이 최신 값을 유지하게 하여 해결 할 수 있었다.

좋은 웹페이지 즐겨찾기