[프로그래머스 / Level 2] 오픈채팅방 (파이썬) 2019 KaKao Blind Recruitment

khyojun·2022년 7월 10일
0

코테연습

목록 보기
4/21

📌문제 설명

📌제한 사항

  • record는 다음과 같은 문자열이 담긴 배열이며, 길이는 1 이상 100,000 이하이다.
  • 다음은 record에 담긴 문자열에 대한 설명이다.
  • 모든 유저는 [유저 아이디]로 구분한다.
  • [유저 아이디] 사용자가 [닉네임]으로 채팅방에 입장 - "Enter [유저 아이디][닉네임]" (ex. "Enter uid1234 Muzi")
  • [유저 아이디] 사용자가 채팅방에서 퇴장 - "Leave [유저 아이디]" (ex. "Leave uid1234")
  • [유저 아이디] 사용자가 닉네임을 [닉네임]으로 변경 - "Change [유저 아이디][닉네임]" (ex. "Change uid1234 Muzi")
  • 첫 단어는 Enter, Leave, Change 중 하나이다.
  • 각 단어는 공백으로 구분되어 있으며, 알파벳 대문자, 소문자, 숫자로만 이루어져있다.
  • 유저 아이디와 닉네임은 알파벳 대문자, 소문자를 구별한다.
  • 유저 아이디와 닉네임의 길이는 1 이상 10 이하이다.
  • 채팅방에서 나간 유저가 닉네임을 변경하는 등 잘못 된 입력은 주어지지 않는다.

📌 Solution
이번 문제를 풀면서 핵심은 dictionary를 활용한 것이었다.
change와 enter를 통하여 닉네임을 바꾸는것에 대해서 크게 고민하지 않고 출력부분을 따로 만들어서 결국 나중에 교체된 닉네임으로 출력만 시키면 되는 것이다.

def solution(record): # 오픈채팅방 카카오 Blind Recruit
    answer = []
    di={}
    for i in range(len(record)):
        tmp= record[i].split()
        if tmp[0]=='Enter':
            di[tmp[1]]=tmp[2]
        elif tmp[0]=='Change':
            di[tmp[1]]=tmp[2]
    
    #출력
    for i in range(len(record)):
        tmp=record[i].split()
        if tmp[0]=='Enter':
            answer.append(di[tmp[1]]+'님이 들어왔습니다.')
        elif tmp[0]=='Leave':
            answer.append(di[tmp[1]]+'님이 나갔습니다.')
    
    
    return answer

문제 해결하며 알게 된 점

  1. 딕셔너리 활용을 하였는데 상당히 유용한 것 같다.
profile
코드를 씹고 뜯고 맛보고 즐기는 것을 지향하는 개발자가 되고 싶습니다

0개의 댓글