Programing/프로그래머스 오답노트
[프로그래머스] 오픈 채팅
yooom
2023. 10. 7. 09:42
문제 설명
풀이
def solution(record):
answer = []
na_ni={}
sta,idi,nic='','',''
for i in record:
parts = i.split()
sta = parts[0]
idi = parts[1]
if len(parts)==3:
nic = parts[2]
na_ni[idi] = nic
for i in record:
phrase = ''
parts = i.split()
sta = parts[0]
idi = parts[1]
if sta == 'Enter':
answer.append(f'{na_ni[idi]}님이 들어왔습니다.')
elif sta == 'Leave':
answer.append(f'{na_ni[idi]}님이 나갔습니다.')
elif sta == 'Change':
continue
answer.append(phrase)
return answer
새로운 테스트 케이스를 만들어 실험
["Enter uid1234 Alice", "Enter uid2345 Bob", "Leave uid1234", "Enter uid3456 Carol", "Change uid2345 David", "Enter uid4567 Eve", "Leave uid3456", "Enter uid5678 Frank", "Change uid1234 Grace", "Leave uid2345"]
["Grace님이 들어왔습니다.", "David님이 들어왔습니다.", "Grace님이 나갔습니다.", "Carol님이 들어왔습니다.", "Eve님이 들어왔습니다.", "Carol님이 나갔습니다.", "Frank님이 들어왔습니다.", "David님이 나갔습니다."]
chat gpt한테 부탁하면 만들어준다. 다만, 좀 다듬어줘야한다.
역시나 아이디 딕셔너리 생성 단계에서 leave를 할 때, 아이디-닉네임 딕셔너리를 닉네임 갱신 없는 채 갱신해버려서 닉네임이 잘못 기록됐다. len() =3일 때만 닉네임을 갱신하도록 바꿔주자
def solution(record):
answer = []
na_ni={}
sta,idi,nic='','',''
for i in record:
parts = i.split()
sta = parts[0]
idi = parts[1]
if len(parts)==3:
nic = parts[2]
na_ni[idi] = nic # 들여쓰기
for i in record:
phrase = ''
parts = i.split()
sta = parts[0]
idi = parts[1]
if sta == 'Enter':
answer.append(f'{na_ni[idi]}님이 들어왔습니다.')
elif sta == 'Leave':
answer.append(f'{na_ni[idi]}님이 나갔습니다.')
elif sta == 'Change':
continue
#answer.append(phrase)
#print(answer)
return answer
들여쓰기 하나로 해결했다.
출처
https://school.programmers.co.kr/learn/courses/30/lessons/42888#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
728x90