문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42888
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
def solution(record):
dict = {}
arr = []
for i in record:
tmp = i.split()
if len(tmp) == 3:
dict[tmp[1]] = tmp[2]
for i in record:
tmp = i.split()
if tmp[0] == 'Enter':
msg = dict[tmp[1]]+"님이 들어왔습니다."
arr.append(msg)
elif tmp[0] == 'Leave':
msg = dict[tmp[1]]+"님이 나갔습니다."
arr.append(msg)
return arr
풀이
- 첫 for문으로 모든 메시지를 돌아서, 딕셔너리에 아이디: 이름으로 저장한다. 이 때, Leave 명령어를 제외한 메시지는 모두 split하면 원소가 3개가 나오기 때문에, 원소가 3개일때에만 딕셔너리를 갱신하도록 했다.
- 이 문제는 들어온 사람이 이름을 바꾸면 바꾸기 전에 들어왔던 이름도 바뀌어서 출력되어야 하는데, 이미 첫 for문에서 Change 메시지에 따른 변화를 딕셔너리에 적용해놓았기때문에, Enter와 Leave 명령어만 확인해서 출력하면 된다.
'👨🏻💻알고리즘 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스/SQL] Lv1. 인기 있는 아이스크림 (0) | 2023.01.25 |
|---|---|
| [프로그래머스] Lv2. 주차 요금 계산 (0) | 2023.01.25 |
| [프로그래머스] Lv2. 피로도 (0) | 2023.01.24 |
| [프로그래머스] Lv3. 이중우선순위큐 (0) | 2023.01.24 |
| [프로그래머스] Lv2. 압축 (0) | 2023.01.23 |