sm 기술 블로그

오픈채팅방 (2019 KAKAO BLIND RECRUITMENT) - 파이썬 본문

문제/프로그래머스_파이썬

오픈채팅방 (2019 KAKAO BLIND RECRUITMENT) - 파이썬

sm_hope 2022. 10. 22. 13:08
def solution(record):
    answer = []

    userDict = dict()

    for val in record:
        tmp = val.split(" ")
        
        if(tmp[0] == "Enter"):
            answer.append(tmp[1] + "님이 들어왔습니다.")
            userDict[tmp[1]] = tmp[2]
        elif(tmp[0] == "Leave"):
            answer.append(tmp[1] + "님이 나갔습니다.")
        else:
            userDict[tmp[1]] = tmp[2]
        
    for i in range(len(answer)):
        userIdTmp = answer[i]
        userId = userIdTmp[0:userIdTmp.index("님")]
        answer[i] = answer[i].replace(userId,userDict[userId])       
    
    return answer

문제요약

유저의 닉네임과 Enter, Leave, Change에 따라 결과를 만들어라.

설명

change 혹은 나가고 들어올때 닉네임이 변경되는경우가 있기 때문에 바로 answer에 넣어주지 않고 딕셔너리를 사용하였다.

 

    for val in record:
        tmp = val.split(" ")
        
        if(tmp[0] == "Enter"):
            answer.append(tmp[1] + "님이 들어왔습니다.")
            userDict[tmp[1]] = tmp[2]
        elif(tmp[0] == "Leave"):
            answer.append(tmp[1] + "님이 나갔습니다.")
        else:
            userDict[tmp[1]] = tmp[2]

userid는 고유하고, 닉네임은 고유하지 않아(중복 가능, 변경될 수 있음) userid로 먼저 구분을 해주고 answer에 저장해 주었다.

 

    for i in range(len(answer)):
        userIdTmp = answer[i]
        userId = userIdTmp[0:userIdTmp.index("님")]
        answer[i] = answer[i].replace(userId,userDict[userId])

첫번째 로직이 끝나고, 각각의 answer를 거내서 userId에 걸 맞는 구문으로 바꿔준다. 

Comments