프로그래머스 2019 카카오 - 오픈채팅방

Jamwon·2021년 7월 3일
0

알고리즘

목록 보기
12/18
post-thumbnail

문제 링크

문제

record
["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"]

이런식으로 문자열 리스트가 주어지면
result
["Prodo님이 들어왔습니다.", "Ryan님이 들어왔습니다.", "Prodo님이 나갔습니다.", "Prodo님이 들어왔습니다."]

이런식으로 문자열 리스트를 반환하는 문제이다.

해결법

주어진 record를 순서대로 읽으면서 첫글자가 'E'면 [사용자의 id, "님이 들어왔습니다."] 형태로 answer 리스트에 추가하고 딕셔너리를 만들어서

dictionary[id] = 이름
식으로 id를 key로 닉네임을 value값으로 넣어주었다.

'L'면 [사용자의 id,"님이 나갔습니다."] 형태로 answer 리스트에 추가해주었다.

'C'면 딕셔너리의 해당id의 닉네임 값을 바꿔주었다.

answer 리스트에 모두 추가가 되었으면 리스트의 id에 해당하는 닉네임을 딕셔너리에 찾아줘서 치환하고 닉네임과 + "들어왔습니다." or "나갔습니다." 문자열을 합쳐준다.!!!

코드

def solution(record):
    answer = []
    dictionary = {}

    for i in record:
        temp = i.split(" ")

        # print(temp)
        if i[0] == 'E':
            dictionary[temp[1]] = temp[2]
            answer.append([temp[1], "님이 들어왔습니다."])

        if i[0] == 'L':
            answer.append([temp[1], "님이 나갔습니다."])

        if i[0] == 'C':
            dictionary[temp[1]] = temp[2]
    for z in range(len(answer)):
        answer[z][0] = dictionary[answer[z][0]]
        answer[z] = answer[z][0] + answer[z][1]

    return answer

딕셔너리를 이용해서 id값을 key로 줘서 쉽게 푼 문제!

어려운 문제들도 이렇게 쉽게 풀었으면..

profile
한걸음씩 위로 자유롭게

0개의 댓글