중간에
TypeError: 'dict' object is not callable
이런 오류가 떴다
answer.append(name[rr[1]]+printer[rr[0]])를
answer.append(name[rr[1]]+printer(rr[0])) 라고 써서 발생한 오류였다.
dictionary의 키를 이용해 값을 얻을 때는[ ]를 ( ) 로 실수로 쓰지 말자!!!!
# 내 풀이
def solution(record):
#딕셔너리에 이름 처리하기
name={}
for i in range(len(record)):
if record[i][0] == 'L':
continue
id_name = record[i].split()
name[id_name[1]] = id_name[2]
#answer(리스트)에 출력 메세지 넣기
answer = []
for i in range(len(record)):
if record[i][0] == 'E':
answer.append(f"{name[record[i].split()[1]]}님이 들어왔습니다.")
elif record[i][0] == 'L':
answer.append(f"{name[record[i].split()[1]]}님이 나갔습니다.")
return answer
#record = ["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"]
#print(solution(record))
# 다른 풀이
def solution(record):
answer=[]
name={}
printer={'Enter':'님이 들어왔습니다.', 'Leave':'님이 나갔습니다.'}
for r in record:
rr = r.split(' ')
if rr[0] in ['Enter', 'Change']: #이름 update
name[rr[1]] = rr[2]
for r in record:
rr = r.split(' ')
if rr[0] != 'Change':
answer.append(name[rr[1]]+printer[rr[0]])
return answer
record = ["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"]
print(solution(record))
교훈
1. 변수 = list[인덱스].split() 사용법
"Enter uid1234 Muzi"를 어떻게 넣을까에 대해
record = [" ... ", "...", " ... "]에서
id_name = record[인덱스].split() 을 하면
id_name = ["Enter", "uid1234", "Muzi"]가 된다. 여기에서
id_name[0], id_name[1], id_name[2]을 이용해보자.
2. ~~~~ in [' ... ', ' ...'] 로 해당하는게 있는지 확인
'Python > 알고리즘' 카테고리의 다른 글
정올 1291 (0) | 2022.07.26 |
---|---|
[프로그래머스] 60057 문자열 압축 (0) | 2022.07.10 |
[백준] 11478 / 18247 (0) | 2022.07.06 |
[백준] 1225 이상한 곱셈 (0) | 2022.07.06 |
[백준] 5639 이진 검색 트리 (미완) (0) | 2022.07.03 |