1. 문제
- 2019 카카오 코딩테스트 1차 1번 오픈채팅방 문제이다.
- 난이도는 레벨 1로 추정되며 매우 쉬운 문제
- 개선점을 기록하고자 남겨둠
2. 풀이
- 들어왔던 ID가 새로 들어왔을 때 그 이전 기록이 새로 들어온 닉네임으로 바뀜.
- Leave의 경우 닉네임 기록이 없음
- Change의 경우도 해당 아이디의 닉네임이 모두 새로운 닉네임으로 바뀜
- 딕셔너리에 아이디를 키로 해서 최신 닉네임으로 업데이트해준다.
- 나중에 반복문으로 출력
def solution(record):
ans = []
dic = {}
for i, data in enumerate(record):
record[i] = data.split(" ")
if record[i][0] == 'Enter' or record[i][0] == 'Change':
dic[record[i][1]] = record[i][2]
if record[i][0] == 'Leave' :
record[i].append(dic[record[i][1]])
for data in record :
if data[0] == 'Enter' :
ans.append(dic[data[1]] + "님이 들어왔습니다.")
elif data[0] == 'Leave' :
ans.append(dic[data[1]] + "님이 나갔습니다.")
return ans
3. 개선점
- split으로 문자열을 나누고 record 배열에 다시 저장해버렸는데, 이 경우 원본 데이터의 손상이 온다. 따라서 새로운 배열에 저장했어야 함
- 딕셔너리에 저렇게 데이터를 갱신해도 되는지 모르겠다. append로 더해주고 나중에 pop으로 꺼내도 되긴 할듯.
- 이런 문제는 10분컷 해야할듯
'알고리즘 > 프로그래머스' 카테고리의 다른 글
2019 KAKAO BLIND RECRUITMENT- 후보키, 파이썬 (0) | 2021.02.25 |
---|---|
2019 카카오 코딩테스트 기출 - 실패율 , 파이썬 (0) | 2021.02.24 |
2020 KAKAO BLIND RECRUITMENT - 가사 검색 (파이썬) (0) | 2021.02.19 |
카카오 코딩테스트 2020 괄호 변환, 파이썬 (0) | 2021.02.17 |
카카오 코딩테스트- 문자열 압축, 파이썬 (0) | 2021.02.16 |