일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 대학원
- 자바
- java
- androidstudio
- 파이썬
- 안드로이드스튜디오
- SQL
- Github
- D3
- SWEA
- BFS
- level1
- level3
- py
- 내휴학생활중의아주큰일
- WebOS
- 다시풀기
- 컴퓨터비전
- Python
- MSBuild
- 대학원일기
- build
- git
- 컨트리뷰톤
- 휴학
- 어렵다
- level4
- LEVEL2
- Matrix Factorization
- 프로그래머스
Archives
- Today
- Total
bit가 눈 앞에서 왔다갔다
Py) 프로그래머스 92334 신고 결과 받기 본문
https://programmers.co.kr/learn/courses/30/lessons/92334
def solution(id_list, report, k):
answer = []
warn = {}
monitor = []
# key 만들어주기
for list in id_list:
warn[list] = [0, [], 0]
# key에 value 넣어주고 걸릴때마다 +1 해주기
for name in report:
name = name.split()
if name[1] not in warn[name[0]][1]: # 이미 신고 당한 적 없으면 신고횟수 올려주기
warn[name[1]][0] += 1
warn[name[0]][1].append(name[1])
for find in warn:
if warn[find][0] >= k: # 신고 당한 횟수가 k보다 크거나 같다면
for check in warn:
if find == warn[check]: break
else:
if find in warn.get(check)[1]: # 신고한 이력이 있음
warn[check][2] += 1
for i in warn:
answer.append(warn[i][2])
return answer
레벨1이긴 했는데 딕셔너리에 익숙하지 않아서 시간이 걸림
그걸 떠나서도 잘 짠 것 같은 느낌은 없긴 하다.
그래서 다른 사람 소스도 확인해서 다시 짜 봄
def solution(id_list, report, k):
answer = [0] * len(id_list)
idx_of = {}
reporters = [set() for _ in range(len(id_list))]
for name in range(len(id_list)):
idx_of[id_list[name]] = name
for name in report:
rpter, rpted = name.split()
reporters[idx_of[rpted]].add(idx_of[rpter])
for i in range(len(id_list)):
if len(reporters[i]) >= k:
for j in reporters[i]:
answer[j] += 1
return answer
return answer
아이디를 인덱스로 반환하는게 너무 좋은 생각인 거 같다,,
나도 문제 푸는 내내 인덱스가 간절했음,,
이건 진짜 그냥 외우고 싶었다.
반응형
'Algorithm > Prob' 카테고리의 다른 글
Py) 프로그래머스 67256 키패드 누르기 (0) | 2022.03.01 |
---|---|
SQL) 프로그래머스 59040 고양이와 개는 몇 마리 있을까 (0) | 2022.02.28 |
Py) 프로그래머스 70128 내적 (0) | 2022.02.27 |
Py) 프로그래머스 12899 (0) | 2022.02.23 |
Py) 프로그래머스 42888 오픈채팅방 (0) | 2022.02.23 |
Comments