728x90
def solution(record):
answer = []
Nick = {}
for r in record:
tmp = r.split(' ')
if tmp[0] in ['Enter', 'Change']:
Nick[tmp[1]] = tmp[2]
for r in record:
tmp = r.split(' ')
if tmp[0] == 'Enter':
answer.append(f"{Nick[tmp[1]]}님이 들어왔습니다.")
elif tmp[0] == 'Leave':
answer.append(f"{Nick[tmp[1]]}님이 나갔습니다.")
return answer
<내 풀이 분석>
Nick: {"유저 아이디": "닉네임"}으로 구성된 딕셔너리. 해시를 사용하여 유저 아이디에 대응하는 닉네임을 구할 예정
1. record에서 한 문장씩 빼서 split을 이용해 공백으로 구분해준다.
2. tmp[0]은 Enter, Leave, Change중 하나일 것인데, Enter와 Change일 경우 유저 아이디에 대응하는 닉네임이 변할 수 있음. => Nick에 추가해주거나 변경해준다.
3. 다시 record를 돌며 문장에 대응하는 메시지를 answer에 append해준다. Nick["유저아이디"]를 이용해서 대응하는 닉네임을 문자열에 넣어준다.
4. 반환
+)
if r.startswith('Enter'):
answer.append(f'{Nick[r.split()[1]]}님이 들어왔습니다.')
elif r.startswith('Leave'):
answer.append(f'{Nick[r.split()[1]]}님이 나갔습니다.')
문자열의 startswith( ) 메소드를 이용해서 문자열이 Enter로 시작하는 지 알 수도 있다.
728x90
'알고리즘 > programmers[2]' 카테고리의 다른 글
[프로그래머스] 행렬의 곱셈: python3 (0) | 2022.01.28 |
---|---|
[프로그래머스] 문자열 압축: python3 (0) | 2022.01.27 |
[프로그래머스] 더 맵게: python3 (0) | 2022.01.27 |