728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제는 계속 바뀌는 이름 대신 바뀌지 않는 유저 이름을 기준으로 하여 정답을 구한 뒤, 마지막에 최종적으로 바뀌는 이름을 유저 아이디와 바꿔 문자열을 구하면 된다.
- 채팅방에서 유저들의 정보를 저장할 딕셔너리를 생성한다. d = {}
- 입력받은 기록 리스트에서 문자열을 하나씩 추출한다. for i in record
- 명령어는 문자열의 제일 앞 단어이고 op = i.split()[0]
- 유저의 아이디는 문자열의 두번째 단어이다. uid = i.split()[1]
- 만약 명령어가 Enter이면 if (op == "Enter")
- 바뀌지 않는 유저 아이디를 key로 하고 이름을 value로 저장한다. d[uid] = i.split()[2]
- 그리고 정답 리스트에 유저 아이디와 문구를 리스트로 묶어 저장한다. answer.append([uid, "님이 들어왔습니다."])
- 만약 명령어가 Leave이면 elif (op == "Leave")
- 정답 리스트에 유저 아이디와 문구를 리스트로 묶어 저장한다. answer.append([uid, "님이 나갔습니다."])
- 만약 명령어가 둘 다 아니라면 (Change) else
- 유저 아이디에 저장되어 있는 이름을 바꾼다. d[uid] = i.split()[2]
- 정답 리스트를 모두 작성했다면 하나씩 추출하여 for i in range(len(answer))
- 유저 아이디로 되어있던 부분을 최종 이름으로 변경한다. answer[i][0] = d[answer[i][0]]
- 해당 리스트를 하나의 문자열로 합쳐준다. answer[i] = ''.join(answer[i])
반응형
3. 소스코드
def solution(record):
answer = []
d = {}
for i in record:
op = i.split()[0]
uid = i.split()[1]
if (op == "Enter"):
d[uid] = i.split()[2]
answer.append([uid, "님이 들어왔습니다."])
elif (op == "Leave"):
answer.append([uid, "님이 나갔습니다."])
else:
d[uid] = i.split()[2]
for i in range(len(answer)):
answer[i][0] = d[answer[i][0]]
answer[i] = ''.join(answer[i])
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] 땅따먹기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.17 |
---|---|
[프로그래머스] 로또의 최고 순위와 최저 순위 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.16 |
[프로그래머스] 단어 변환 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.15 |
[프로그래머스] 주차 요금 계산 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.14 |
[프로그래머스] 더 맵게 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.12 |
[프로그래머스] [3차] n진수 게임 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.11 |
[프로그래머스] [1차] 다트 게임 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.10 |
[프로그래머스] 야근 지수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.09 |