프로그래머스 [lv2] 오픈채팅방 파이썬
접근
-
아래처럼 set() 형식으로 저장했다. (첫번째 원소인 '순서'는 불필요하다.)
(순서, 아이디, 이름, 메시지)
(1, uid1234, Muzi, 님이 들어왔습니다.)
(2, uid4567, Prodo, 님이 들어왔습니다.)
(3, uid4567, -, 님이 나갔습니다.)
(4, uid4567, Prodo, 님이 들어왔습니다.)
(5, uid4567, Ryan, -) -
Enter, Leave의 경우만 결과값에 반영된다 -> "Change"는 분기 처리
포인트
- 중간에 이름이 바뀌는 경우를 고려하는 것이 가장 중요한 포인트다.
- 이름은 바뀔 수 있지만, uid는 고정값이기 때문에 이것을 key로, 변하는 이름을 value로 잡았다.
(딕셔너리 성질에 의해, 채팅방을 나간 후 이름이 변하는 경우를 곧바로 커버할 수 있다. uid는 동일하기 때문에 변경된 이름만 update 된다.) - 이름이 바뀔 때의 메시지는 출력하지 않는다.
코드
def solution(record):
answer, tmp = list(), list()
id_name = {"Enter": "님이 들어왔습니다.",
"Leave": "님이 나갔습니다."}
temp = [string.split(' ') for string in record]
for i in temp:
if i[0] != 'Leave':
id_name[i[1]] = i[2]
if i[0] == "Enter" or i[0] == "Leave":
tmp.append('{},{}'.format(i[1], i[0]))
for i in tmp:
a, b = i.split(',')
answer.append('{}{}'.format(id_name[a], id_name[b]))
return answer
Author And Source
이 문제에 관하여(프로그래머스 [lv2] 오픈채팅방 파이썬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tbnsok40/프로그래머스-lv2-오픈채팅방-파이썬저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)