/ 제출 1 /
def solution(id_list, report, k):
answer = []
result = {i:0 for i in id_list}
reported = {}
for i in range(len(report)):
a, b = report[i].split()
if b in reported and a not in reported[b]:
reported[b].append(a)
else:
reported[b] = [a]
for reported_user in reported:
if len(reported[reported_user]) >= k:
for i in range(len(reported[reported_user])):
user = reported[reported_user][i]
result[user] += 1
for user in result:
answer.append(result[user])
return answer
채점 결과
정확성: 20.8
합계: 20.8 / 100.0
5 / 24 solved.
아휴.. 한 번에 안 되냐 ....
아휴.. 한 번에 안 되냐 ....
제한시간이 10초가 정확성테스트에 포함되어 있어서 시간에서 걸린기도 했다고 생각합니다.
테스트 1 〉 | 통과 (0.01ms, 10.1MB) |
테스트 2 〉 | 실패 (0.02ms, 10.3MB) |
테스트 3 〉 | 실패 (173.10ms, 27.5MB) |
테스트 4 〉 | 실패 (0.03ms, 10.2MB) |
테스트 5 〉 | 실패 (0.04ms, 10.4MB) |
테스트 6 〉 | 실패 (1.00ms, 10.3MB) |
테스트 7 〉 | 실패 (2.27ms, 10.6MB) |
테스트 8 〉 | 실패 (4.34ms, 10.8MB) |
테스트 9 〉 | 실패 (65.92ms, 18.4MB) |
테스트 10 〉 | 실패 (72.93ms, 18.5MB) |
테스트 11 〉 | 실패 (165.25ms, 27.4MB) |
테스트 12 〉 | 실패 (0.24ms, 10.3MB) |
테스트 13 〉 | 통과 (0.24ms, 10.2MB) |
테스트 14 〉 | 실패 (63.66ms, 18.6MB) |
테스트 15 〉 | 실패 (117.01ms, 27.4MB) |
테스트 16 〉 | 실패 (0.14ms, 10.2MB) |
테스트 17 〉 | 실패 (0.16ms, 10.2MB) |
테스트 18 〉 | 실패 (0.35ms, 10.3MB) |
테스트 19 〉 | 실패 (0.79ms, 10.3MB) |
테스트 20 〉 | 실패 (53.54ms, 18.7MB) |
테스트 21 〉 | 실패 (112.10ms, 27.2MB) |
테스트 22 〉 | 통과 (0.01ms, 10.1MB) |
테스트 23 〉 | 통과 (0.01ms, 10.2MB |
테스트 24 〉 | 통과 (0.01ms, 10.1MB) |
다시 따져보면 불필요한 과정이 꽤 많이 섞여있습니다.
효율적으로 다시 구성할 체력이 안 나서 같은 로직으로 다른 분의 푼 걸 참고해 다시 풀이를 했습니다.
def solution(id_list, report, k):
answer = [0] * len(id_list)
reported = {i: 0 for i in id_list}
for r in set(report):
reported[r.split()[1]] += 1
for r in set(report):
if reported[r.split()[1]] >= k:
answer[id_list.index(r.split()[0])] += 1
return answer
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
불필요하게 배열을 많이 선언하지도 않아서 일단 딱 직관적으로 코드를 파악하기 좋습니다.
answer 부분에 값을 더해줄 때, id_list의 인덱스를 가져와서 값을 더하는 식으로 깔끔하게 구현한 것이 제가 못 해낸 포인트입니다. 해당 부분을 재반복하며 확실히 익혀야겠습니다.
set()함수도 다시 리마인드합시다. 자료형을 적절하게 사용하여 줍시다.
/ 22.08.10 1차 복습 /
def solution(id_list, reports, k):
# initialize
users = {}
reportedUsers = {}
for user in id_list:
users[user] = []
reportedUsers[user] = []
# 신고 목록 만들기
for report in reports:
user, reported = report.split(" ")
if user not in reportedUsers[reported]:
reportedUsers[reported].append(user)
if reported not in users[user]:
users[user].append(reported)
# 정지 목록 만들기
suspended = []
for reportedUser in reportedUsers:
if len(reportedUsers[reportedUser]) >= k:
suspended.append(reportedUser)
# 처리 결과 리스트 만들기
result = []
for user in users:
cnt = 0
for susUser in suspended:
if susUser in users[user]:
cnt += 1
result.append(cnt)
return result
: 확실히 리스트나 딕셔너리 다루는데 익숙해져서 구현력이 많이 는 것 같다. 한 번에 패스가 나온다.
두 달만의 성취.. 눈물 나 진짜.. 지난 시간들 생각하면 더 눈물 나..자기연민 집어치우고 더 달려라 달려
'CodingTest > Programmers' 카테고리의 다른 글
[ 프로그래머스 ] 없는 숫자 더하기 (0) | 2022.06.22 |
---|---|
[ 프로그래머스 ] 신규 아이디 추천 (0) | 2022.06.22 |
[ 프로그래머스 ] 체육복 (0) | 2022.06.21 |
[ 프로그래머스 ] H-index (0) | 2022.06.21 |
[ 프로그래머스 ] 가장 큰 수 (0) | 2022.06.21 |