본문 바로가기
프로그래머스/1단계

(Python/Lv1)신고 결과 받기

by windy7271 2022. 8. 29.
728x90
반응형

문제출처:https://school.programmers.co.kr/learn/courses/30/lessons/92334

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이:

def solution(id_list, report, k):

    answer = [0] * len(id_list)
    reported = {x:0 for x in id_list}

    print(report)
    for i in set(report):
        reported[i.split()[1]] += 1
    print(reported)

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

    print(answer)

처음에 reported 를

for i in range(len(id_list)):
    arr[id_list[i]] = set()
    answerDic[id_list[i]] = 0

for i in range(len(report)):
    reporter, reported = report[i].split(" ")
    arr[reported].add(reporter)

print(arr)

이런식으로 했더니 맨 마지막에 출력하는걸 못해서 포기했다.

 

reported = {x:0 for x in id_list}
키는 id_list 의 값들이고 value 는 0 으로 통일된다..

>>['muzi frodo', 'apeach frodo', 'frodo neo', 'muzi neo', 'apeach muzi']
for i in set(report):  			# set 을 해줘야지 똑같은사람이 똑같은 사람을 신고하는거 카운트 되는걸 방지
    reported[i.split()[1]] += 1 # 돌면서 신고당한 사람이 있으면 +1 을 해준다.
print(reported)

{'muzi': 1, 'frodo': 2, 'apeach': 0, 'neo': 2}
i.split() 으로 잘라준다 >> muzi frodo [1] 이면 뒤엣 값 >> 신고당한 사람만 가져온다

 

for i in set(report):							 # set 한 상태로 포문을 돌려
    if reported[i.split()[1]] >= k:				 # 만약 신고 당한사람이 k 번 이상이면
        answer[id_list.index(i.split()[0])] += 1 # 신고 당한 사람의 0 번째 사람의 인덱스를 id_list에서 찾아서 +1 을 해준다.

print(answer)
[2, 1, 1, 0]

print(i.split()[0]) == muzi muzi frodo apeach 이런식 
print([id_list.index(?)]) 이런식으로 들어가서 ?의 인덱스를 찾아줌

 

최근에 js로 공부하니 좀 어려웠다. 

 

 

 

반응형

댓글