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로 공부하니 좀 어려웠다.
반응형
댓글