오픈채팅방

bird.j·2021년 10월 12일
0

프로그래머스

목록 보기
41/53

프로그래머스

이 문제를 보고 딕셔너리를 이용해야겠다는 생각이 들었다. 그런데 record에 있는 문장들을 순서대로 앞에 이미 결과에 담아버린 이름을 어떻게 바꾸나 했는데 순서대로 처리해줄 필요가 없었다.

def solution(record):
    record = list(map(lambda x : x.split(), record))
    
    mems = {}
    for r in record:
        if len(r) > 2:
            mems[r[1]] = r[2]
    
    tb = {'Enter': '님이 들어왔습니다.', 'Leave': '님이 나갔습니다.'}
    result = []
    for r in record:
        if r[0] in tb:
            result.append(mems[r[1]]+tb[r[0]])
    return result

우선 회원 아이디와 이름을 키-값으로 하는 mems 딕셔너리를 만들고 for문을 돌려 enter이면 아이디에 해당하는 이름을 mems에서 찾아 그 이름을 끄집어내면 된다.

그리고 이 문제를 풀면서 알게된 것은 list(map(lambda x : x.split(), record)) 이것인데 for문을 돌며 공백 기준으로 자르는 것이 아니라 처음부터 다 자른채로 리스트로 만드니까 매우 편했다. 이 방법을 잘 기억해야겠다.

["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"] --->
[['Enter', 'uid1234', 'Muzi'], ['Enter', 'uid4567', 'Prodo'], ['Leave', 'uid1234'], ['Enter', 'uid1234', 'Prodo'], ['Change', 'uid4567', 'Ryan']] 이렇게 잘라서 리스트에 담아준다.

0개의 댓글