반응형
7월 초 Python을 써야하는 프로젝트도 하게 되었고 다른 회사 코테는 어떤 형식인지 보고 싶어서 프로그래머스 코테 기출문제를 풀어보게 되었다.
🤔 문제
https://programmers.co.kr/learn/courses/30/lessons/42888
코딩테스트 연습 - 오픈채팅방
오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오
programmers.co.kr
2019 KAKAO BLIND RECRUITMENT 문제라고 한다. 벌써 3년 전... Level은 2 !
😄 나의 풀이
from collections import defaultdict
def solution(record):
answer = []
user = defaultdict(set)
record_id = []
for sentence1 in record :
act, user_info = sentence1.split(' ',1)
if ' ' in user_info :
user_id, user_name = user_info.split(' ')
user[user_id] = user_name
else :
user_id = user_info
record_id.append(act + ' ' + user_id)
for sentence2 in record_id :
action, user_id2 = sentence2.split(' ')
if action == 'Enter' :
answer.append(user[user_id2]+"님이 들어왔습니다.")
elif action == 'Leave' :
answer.append(user[user_id2]+"님이 나갔습니다.")
return answer
다른 코딩 문제를 풀어보다가 defaultdict(set) 을 알게 되었다. 처리 속도도 빠르고 사용하기에 좋은 것 같아서 적용해서 문제를 풀어보았다. 하지만 import를 해줘야 한다는 단점...
🤩 Best 풀이
def solution(record):
answer = []
namespace = {}
printer = {'Enter':'님이 들어왔습니다.', 'Leave':'님이 나갔습니다.'}
for r in record:
rr = r.split(' ')
if rr[0] in ['Enter', 'Change']:
namespace[rr[1]] = rr[2]
for r in record:
if r.split(' ')[0] != 'Change':
answer.append(namespace[r.split(' ')[1]] + printer[r.split(' ')[0]])
return answer
다른 답변들 중 가장 많은 좋아요를 받은 답변같다. 엄청나게 기막힌 Best 풀이라고 생각되진 않지만 split을 하나의 변수에 할당해서 index로 풀어가는게 내 code보다 더 적절해보인다!
반응형
'Exercises 🤓 > Python' 카테고리의 다른 글
[프로그래머스] 타겟 넘버 - Python (0) | 2022.07.16 |
---|---|
[프로그래머스] 메뉴 리뉴얼 - Python (0) | 2022.07.15 |
[프로그래머스] 로또의 최고 순위와 최저 순위 - Python (0) | 2022.06.16 |
댓글