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