본문 바로가기

알고리즘

프로그래머스/오픈채팅방/py

https://school.programmers.co.kr/learn/courses/30/lessons/42888

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제


채팅 방에서 들어오고 나갈때 닉네임이 마지막으로 바뀐경우에 남는 닉네임을 결과로 만들어라.

 

입력


문자열 이 여러개인 리스트 record 가 주어진다. 문자열은 "(enter,leave,change) uid nickname" 순으로 들어있다.

 

출력


채팅방에 사람들이 들어오고 나갈때 남는 이름과 메세지를 적고 마지막으로 바뀐 닉네임으로 해당 메세지를 변경하여라.

 

def solution(record):
    answer = []
    elcDict = {} # enter leave change 를 키값으로 하는 딕셔너리를 만든다.
    for elc in record: # 기록을 돈다.
        elclist = elc.split() # record 를 잘 공백으로 나눈다.
        inout = elclist[0] # enter leave change 중하나
        uid = elclist[1] # uid
        if len(elclist) == 3: # change 가 아닐때는 닉네임이 있으므로
            name = elclist[2] # nickname
            elcDict[uid] = name # 이름을 uid 의 값으로 넣어준다.
        
    for elc in record: 
        elclist = elc.split() #record 를 공백으로 나눠준다.
        inout = elclist[0]
        uid = elclist[1]
        if inout == 'Enter': # 들어올때
            answer.append(elcDict[uid] + '님이 들어왔습니다.') # 마지막 uid로 저장된 닉네임으로 메세지를 만든다.
            
        elif inout == 'Leave': # 나갈때
            answer.append(elcDict[uid] + '님이 나갔습니다.')  # 마지막 uid 로 저장된 닉네임으로 메세지를 만든다.
    
    return answer