본문 바로가기

코딩테스트/Python

[프로그래머스] 오픈채팅방

내 코드

def solution(record):
    answer = []
    people = {}
    position = {"Enter":"들어왔습니다.","Leave":"나갔습니다."}
    
    for re in record:
        arr = re.split()
        if arr[0] != "Leave":
            people[arr[1]] = arr[2]
    
    for re in record:
        arr = re.split()
        if arr[0] in position:
            answer.append(people[arr[1]]+"님이 "+position[arr[0]]) 
            
    return answer

딕셔너리를 사용해서 풀었다!! leave가 아니라면 people에 이름을 계속 갱신시켜준다.

이름을 다 바꿨으면 answer리스트를 만들어서 답을 리턴한다.

 

다른사람 코드

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

    for r in record:
        if r.split(' ')[0] != 'Change':
            answer.append(namespace[r.split(' ')[1]] + printer[r.split(' ')[0]])

    return answer

내꺼랑 완전 비슷함!!!!