문제/프로그래머스_파이썬
오픈채팅방 (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에 걸 맞는 구문으로 바꿔준다.