[코딩테스트] 오픈채팅방
프로그래머스 코딩 테스트 준비
https://programmers.co.kr/learn/courses/30/lessons/42888
문제 설명은 다음 사이트에서 확인 할 수 있다.
오늘부터는 프로그래머스 레벨 2 코드들을 풀이할 예정이다.
< 내가 작성한 코드 >
def solution(record):
answer = []
dict = {}
str = ''
for line in record :
line_split = line.split() # enter uid1234 muzi 0,1,2 배열 생성
if line_split[0] == "Enter" or line_split[0] == "Change" :
dict[line_split[1]] = line_split[2] # uid1234,muzi
for line in record :
line_split = line.split()
if line_split[0] == "Enter" :
str += dict[line_split[1]] + "님이 들어왔습니다."
answer.append(str)
elif line_split[0] == "Leave" :
str += dict[line_split[1]] + "님이 나갔습니다."
answer.append(str)
str = ''
return answer
< 다른 사람이 풀이한 코드 >
def solution2(record):
answer = []
namespace = {}
printer = {'Enter':'님이 들어왔습니다.', 'Leave':'님이 나갔습니다.'}
for r in record:
print(r)
rr = r.split(' ')
print(rr,"?")
if rr[0] in ['Enter', 'Change']:
namespace[rr[1]] = rr[2]
print(namespace,"a")
for r in record:
if r.split(' ')[0] != 'Change':
answer.append(namespace[r.split(' ')[1]] + printer[r.split(' ')[0]])
return answer
🧑🏻 후기
split함수와 문자열 딕셔너리를 통해 쉽게 해결 할 수 있었다.
이런식으로 활용 할 수 있다.
dict[line_split[1]] = line_split[2]
이런식으로 저장하면
{'uid1234': 'Prodo', 'uid4567': 'Ryan'}
딕셔너리는 다음과 같이 저장되게 된다.
이를 이용하여 마지막에 업데이트된 고유 uid에 따른 닉네임 값이 최신 값을 유지하게 하여 해결 할 수 있었다.
Author And Source
이 문제에 관하여([코딩테스트] 오픈채팅방), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sdj3261/코딩테스트-오픈채팅방저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)