728x90
https://programmers.co.kr/learn/courses/30/lessons/42888
접근
어떤 한 사용자는 들어왔다 나갈 수 있고 다시 들어오면서 기존의 닉네임과 다르게 입장할 수도 있다. 또한 입장 후에 닉네임을 변경할 수도 있으며 사용자들은 중복된 닉네임을 사용할 수 있다.
따라서 주어지는 조건 중에 userId를 활용하였고 user라는 딕셔너리를 만들어 userId에 해당하는 닉네임을 저장해두었다가 활용하였다.
구현
- users라는 딕셔너리를 생성한다.
- Enter 또는 Change일 때에만 users에 user의 ID를 Key로 저장한다.
users = dict()
for record in records:
record = record.split(' ')
if record[0] == 'Leave':
continue
users[record[1]] = record[2]
- 이제 Enter와 Leave에 대해 users에 저장되어 있는 것을 활용하여 메시지를 전달한다.
- 해당 user의 ID로 딕셔너리 users를 검색하여 들어왔다는 것과 나갔다는 메시지를 answer에 추가한다.
for record in records:
record = record.split(' ')
if record[0] == 'Enter':
answer.append(users[record[1]]+'님이 들어왔습니다.')
elif record[0] == 'Leave':
answer.append(users[record[1]]+'님이 나갔습니다.')
return answer
전체 코드
def solution(records):
answer = []
users = dict()
for record in records:
record = record.split(' ')
if record[0] == 'Leave':
continue
users[record[1]] = record[2]
for record in records:
record = record.split(' ')
if record[0] == 'Enter':
answer.append(users[record[1]]+'님이 들어왔습니다.')
elif record[0] == 'Leave':
answer.append(users[record[1]]+'님이 나갔습니다.')
return answer
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[Level 2] 순위 검색 (0) | 2021.09.05 |
---|---|
[Level 2] 메뉴 리뉴얼 (0) | 2021.09.02 |
[Level 2] 프렌즈 4블록 (0) | 2021.08.29 |
[Level 2] 뉴스 클러스터링 (0) | 2021.08.29 |
[Level 1] 실패율 (0) | 2021.08.03 |