문제 (2019 KAKAO BLIND RECRUITMENT)
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() 부분을,,, 좀더 좋은 방법으로 쓸 수 있을 것 같긴한데..
어쨌든 한번에 성공했더니 기분은 좋균 ㅎㅎ
이번주는 구현 위주로 풀고 담주부터 진짜진짜 알고리즘 공부해야지;;
반응형
'Problem Solving > Programmers' 카테고리의 다른 글
SQL (Level 4) : 우유와 요거트가 담긴 장바구니 - MySQL, JOIN (2) | 2022.04.26 |
---|---|
SQL (Level 4) : 보호소에서 중성화한 동물 - ORACLE, MySQL, JOIN, alias (0) | 2022.04.26 |
SQL (Level 2) : 중성화 여부 파악하기 - ORACLE, CASE (0) | 2022.03.18 |
프로그래머스 (Level 1) : 두 개 뽑아서 더하기 / Python, dictionary (0) | 2022.03.01 |
프로그래머스 (Level 1) : 실패율 / Python, dictionary, 커스텀 sorted(lambda) (0) | 2022.02.16 |