Level 2. 오픈채팅방

Pear_Mh·2021년 6월 19일
0

Programmers-Level 2.

목록 보기
3/40

03. 오픈채팅방

코딩테스트 연습 > 2019 KAKAO BLIND RECRUITMENT > 오픈채팅방
https://programmers.co.kr/learn/courses/30/lessons/42888


문제 설명

Input value =

  • record = 'action id name'의 문자열로 구성된 리스트

Output value =

  • 제한 사항에 따라 record의 내용을 print

제한 사항

  • record는 다음과 같은 문자열이 담긴 배열이며, 길이는 1 이상 100,000 이하이다.

  • 다음은 record에 담긴 문자열에 대한 설명이다.

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

문제 구상

#00
record = ["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"]
  1. 문자열들을 리스트로 변환
#01
array = []
name = {}
for i in record:
    array.append(i.split(' '))
  1. 문자열의 0번째 값이 Enter,Change 일 경우,

  2. 문자열의 1번째 값(아이디)를 키 값으로 한 딕셔너리의 value 값에 2번째 값인 닉네임을 갱신한다.

for a in array:
    if a[0] in ['Enter','Change']:
        name[a[1]]=a[-1]
  1. 출력할 빈 리스트를 만든 후,
#02
answer= []
  1. array 원소의 1번째 값이 name의 key값에 있으면서,
for a in array:
    if a[1] in name.keys():

05-1. 원소의 0번째 값이 'Enter'일 경우 '()님이 들어왔습니다'를 출력 리스트에 append()

if a[0] in 'Enter':
	answer.append('{}님이 들어왔습니다.'.format(name[a[1]]))

05-2. 원소의 0번째 값이 'Leave'일 경우 '()님이 나갔습니다'를 출력 리스트에 append()

elif a[0] in 'Leave':
	answer.append('{}님이 나갔습니다.'.format(name[a[1]]))
  1. 출력
#03
answer

문제 풀이

def solution(record):
    array = []
    name = {}
    for i in record:
        array.append(i.split(' '))
    for i in array:
        if i[0] in ["Enter","Change"]:
            name[i[1]]=i[-1]
    answer = []
    for i in array:
        if i[1] in name.keys():
            if i[0] in "Enter":
                answer.append("{}님이 들어왔습니다.".format(name[i[1]]))
            elif i[0] in "Leave":
                answer.append("{}님이 나갔습니다.".format(name[i[1]]))
    return answer

# Code test
record = ["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"]
solution(record)
profile
Beyond the new era.

0개의 댓글

관련 채용 정보