신고결과받기 _ Lv.1

2022. 9. 4. 19:132022/Programmers_Kakao 기출

카카오 코테도 풀어보려고 오늘 처음 해봤는데... 1레벨부터 힘들어한다... 

회사다니면서 공부하는거 쉽지않은데 이대로 하다가는 죽도 밥도 안될거같은 이 너낌~

 

쨌든 아래는 내가 처음 생각나는대로 구현해본 코드 그렇지만 역시나 100점 만점에 20.8점...^&^

def solution(id_list, report, k):
    answer = [0 for _ in range(len(id_list))]
    reported_cnt = [0 for _ in range(len(id_list))]
    reporter_list = [[] for _ in range(len(id_list))]
    for rp in report:
        rpList = rp.split(' ')
        reporter = rpList[0]; reported_id = rpList[1]
        reporter_idx = id_list.index(reporter)
        reported_idx = id_list.index(reported_id)

        reported_cnt[reported_idx] += 1
        if reporter_idx not in reporter_list[reported_idx]:
            reporter_list[reported_idx].append(reporter_idx)

    for i in range(len(id_list)):
        if reported_cnt[i] >= k:
            for user in reporter_list[i]:
                answer[user] += 1

    return answer

 그랬는데 엄청 어이없는 부분에서 내가 실수를 했다.

if reporter_idx not in reporter_list[reported_idx]:
    reported_cnt[reported_idx] += 1
    reporter_list[reported_idx].append(reporter_idx)

 요부분이다. 기존의 것은 신고 받은 사람은 신고한 사람이 중복되는지 거치지 않고 무조건 +1을 해주니깐 통과를 못했던것... ㅎㅎㅎ 정신차리자!

 

프로그래머스는 같은 문제에 대한 유사한 풀이를 보여줘서 너무 좋다,,,

호우..그런데 최대한 효율적으로 짜둔 사람들의 코드를 보면서 오늘도 감탄했다.

 

아래는 최적화된 코드이다.

def solution(id_list, report, k):
    answer = [0] * len(id_list)
    reports = {x : 0 for x in id_list}
    for r in set(report):
        reports[r.split()[1]] += 1

    for r in set(report):
        if reports[r.split()[1]] >= k:
            answer[id_list.index(r.split()[0])] += 1

    return answer

1. reports는 각 유저별 신고당한 횟수를 나타내는데, 동일한 유저가 2번이상 신고하지 못하기 때문에 set(report)로 중복을 제거해주었다. 이 부분을 생각했더라면 위와 같은 불상사는 안일어났을 것이다... ㅠ.ㅠ

2. 신고한 리스트들을 순서대로 보면서 신고당한 유저가 k번 이상 신고를 당했다면 메일 발송(answer)을 1 추가한다.

 

이번에 배운점이라면 새로운 변수를 만드는것 보다 기존의 것을 최대한 활용하여 구현하는 연습을 해야겠다는 생각을 하게되었다. 

'2022 > Programmers_Kakao 기출' 카테고리의 다른 글

크레인 인형뽑기 게임 _ Lv.1  (0) 2022.09.09
성격 유형 검사하기 _ Lv.1  (0) 2022.09.06
키패드 누르기 _ Lv.1  (0) 2022.09.06
숫자 문자열과 영단어 _ Lv.1  (0) 2022.09.05
신규 아이디 추천 _ Lv.1  (0) 2022.09.04