Problem Solving/Programmers
프로그래머스 (Level 2) : 오픈채팅방 / Python, dictionary / 2019 KAKAO BLIND RECRUITMENT
eroke
2022. 4. 20. 23:10
문제 (2019 KAKAO BLIND RECRUITMENT)
코딩테스트 연습 - 오픈채팅방
오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오
programmers.co.kr
record 문자열배열을 입력받을 때 사용자가 들어오고 나간 이력을 출력하는 문제이다.
닉네임은 변경할 수 있고 최종적으로 변경된 닉네임으로 결과를 출력한다.
풀이
def solution(record):
dic={}
res=[]
id=[]
for i in range(len(record)):
s = record[i].split()
if s[0]=='Enter':
res.append(s[1]+'님이 들어왔습니다.')
dic[s[1]]=s[2] #id별 이름저장
id.append(s[1])
elif s[0]=='Leave':
res.append(s[1]+'님이 나갔습니다.')
id.append(s[1])
elif s[0]=='Change':
dic[s[1]] = s[2] #이름변경
for j in range(len(res)):
tmp=dic[id[j]]
res[j]=res[j].replace(id[j],tmp)
return res
딕셔너리로 id당 바뀌는 닉네임을 관리하고 사용자가 채팅방에 들어오고 나갈때마다
'id님이 들어왔습니다/나갔습니다' 로 저장해서 마지막에 id 부분을 최종 닉네임으로 바꿨다.
저 replace() 부분을,,, 좀더 좋은 방법으로 쓸 수 있을 것 같긴한데..
어쨌든 한번에 성공했더니 기분은 좋균 ㅎㅎ
이번주는 구현 위주로 풀고 담주부터 진짜진짜 알고리즘 공부해야지;;
반응형