daniel7481의 개발일지

[프로그래머스]2022 KAKAO BLIND RECRUITMENT 신고 결과 받기 본문

프로그래머스

[프로그래머스]2022 KAKAO BLIND RECRUITMENT 신고 결과 받기

daniel7481 2022. 3. 24. 22:36
반응형

https://programmers.co.kr/learn/courses/30/lessons/92334?language=python3 

 

코딩테스트 연습 - 신고 결과 받기

문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의

programmers.co.kr

실로 오랜만에 포스팅을 하는 것 같다. 개인 사정으로 인해 한 동안 컴퓨터와 가까이 할 수 없었다. 머리와 손이 굳는 기분이 들어 쉬운 난이도인 1단계 카카오 채용 코테를 풀어보았다. 오랜만이라 그런지 낯선 기분이 들어 아쉬웠다.

풀이

정말 간단한 문자열 문제였던 것 같다. 그런데도 헤멘것을 보면 현타가 온다... 어쨌든 나는 각 유저에 대하여 자신을 신고한 인원들을 value로 가지는 딕셔너리를 선언하여 만약에 자신을 신고한 사람이 있으면 리스트에 append해주는 식으로 진행하였다. 전부 다 진행 한 후 만약 리스트의 길이가 k보다 크거나 같다면 리스트 안 모든 요소의 인원들을 키 값, 인덱스를 value로 가지는 hash라는 딕셔너리를 선언하여 answer 리스트 인덱스에 해당하는 값을 하나씩 더해주는 식으로 진행하였다.

def solution(id_list, report, k):
    counter = {}
    report = set(report)
    report = list(report)
    hash = {}
    for i, id in enumerate(id_list):
      hash[id] = i
    for id in id_list:
      counter[id] = []
    answer = []
    for i in range(len(id_list)):
      answer.append(0)
    for r in report:
      reporter, reported = r.split()
      counter[reported].append(reporter)
    for j in counter.values():
      if len(j) >= k:
        for i in j:
          answer[hash[i]] += 1
    return answer
print(solution(["con", "ryan"], ["ryan con", "ryan con", "ryan con", "ryan con"], 3))

정말 오랜만이라 머리와 손이 굳었다. 안그래도 볼품 없는 실력이 이젠 아예 사라진 기분이 든다. 그래도 다시 시작하면 될것이라 믿는다.

반응형