플그래밍/파이써언

[파이썬] 2019 KAKAO BLIND RECRUITMENT > 오픈채팅방

훗티v 2022. 2. 15. 18:00
반응형

 

프로그래머스 - 코딩테스트 연습

프로그래머스라는 사이트에 무료 가입하면

 

코딩테스트 연습 메뉴를 활용할 수 있다.

난이도가 낮은 문제부터 높은 문제까지 다양한 문제를 선호하는 프로그래밍 언어를 통해 풀고

정답까지 맞춰볼 수 있는 서비스를 제공한다.

 

입력값과 출력값이 예시와 일치하더라도 정확성이 떨어지는 답변의 경우

런타임 테스트 과정에서 에러가 발생하여 정답으로 인정되지 않는다.

 

이렇게 모든 부분에서 정답으로 인정받으면 점수가 주어지며

전체 참가자 중 본인의 순위도 확인할 수 있다.

 

정답으로 인정된 문제의 경우 다른 사람의 풀이도 참고 할 수 있게되며

같은 문제를 어떤 다른 방식으로 접근했는지도 볼 수 있다.

 

 

코드 - 오픈채팅방 > 2019 KAKAO BLIND RECRUITMENT

record = ["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"]
d = {}

for item in record:
    word = item.split()
    try:
        d.update({word[1]:word[2]})
    except IndexError:
        pass

answer = []

for item in record:
    word = item.split()
    if 'Enter' in item and word[1] in item:
        answer.append(d[word[1]] + "님이 들어왔습니다.")
    if 'Leave' in item and word[1] in item:
        answer.append(d[word[1]] + "님이 나갔습니다.")

 

해당 문제는 2019년 KAKAO BLIND 채용에서 발췌한 문제로 보인다.

 

고정 아이디와 변경 가능한 닉네임을 가진 유저가

채팅방에 입장/퇴장 했을 때의 알림메세지를 최근에 설정한 아이디로 표시하는 것이 목표이다.

 

유저마다 고유의 아이디를 갖기 때문에 아이디를 기준으로 딕셔너리 key 값을 설정하고

최근 변경한 닉네임을 호출하여 딕셔너리에 덧씌우는 방법으로 입력값(record)을 처리하고,

이에 따라 출력 메세지를 최종적으로 출력하는 방법을 적용했다.

 

이전에 regex와 Counter로 고유 아이디를 추출하고

이를 다시 딕셔너리로 정리하는 방법으로 풀었을 때는

기댓값을 일치했지만 런타임에러가 발생했었다.

 

딕셔너리를 업데이트 할 때 키는 같지만 값이 다른 경우

최근 값을 기준으로 갱신되기 때문에,

문제에서 처럼 목록의 가장 마지막 값이 기준이 될 때 활용할 수 있다.

 

주어진 입력값(record)와 딕셔너리(d)를 활용하여 최종 메세지 출력

기댓값과 일치하며 런타임 에러 테스트도 패스.

 

 

채점 결과 - 오픈채팅방 > 2019 KAKAO BLIND RECRUITMENT

 

 

 

 

 

[플그래밍/파이써언] - [파이썬 기초] 문자열의 길이 구하기, len()

[플그래밍/파이써언] - [파이썬] 너무 쉬운 파이썬 print 줄바꿈 없애기

[플그래밍/파이써언] - [파이썬 기초] 정규 표현식 (regex) 숫자 추출

[플그래밍/파이써언] - [파이썬 기초] 피보나치 수열 구하기

[플그래밍/파이써언] - [파이썬] 너무 쉬운 파이썬 공백 제거

 

 

 

 

 

 

반응형