728x90
반응형
실패율 (프로그래머스 Lv.1)
https://school.programmers.co.kr/learn/courses/30/lessons/42889
처음 제출 한 내 코드
def solution(N, stages):
answer = [0]*(N+2)
n_answer = {}
for stage in stages:
for j in range(1,stage+1):
answer[j] += 1
counts[stage] += 1
answer[N+1],answer[0] = 0, 0
for i in range(1,N+1):
if stages.count(i)==0 or stages[i]==0:
n_answer[i] = 0
else:
n_answer[i] = stages.count(i)/answer[i]
print(n_answer)
n_answer = dict(sorted(n_answer.items(), key=lambda x:x[1],reverse = True))
answer = list(n_answer.keys())
return answer
이걸로 테스트 5,9,25,27 번이 런타임에러 및 시간초과가 나왔다!
사실 stage가 20만 이하이길래 그럴것같았다.
일단 count가 시간을 엄청 잡아먹는 친구라 따로 count를 저장할 리스트를 만드는 걸로 바꿔줘봤다.
def solution(N, stages):
answer = [0]*(N+2)
n_answer = {}
counts = [0]*(N+2)
for stage in stages:
for j in range(1,stage+1):
answer[j] += 1
counts[stage] += 1
answer[N+1],answer[0] = 0, 0
for i in range(1,N+1):
if counts[i] ==0 or stages[i]==0:
n_answer[i] = 0
else:
n_answer[i] = counts[i]/answer[i]
print(n_answer)
n_answer = dict(sorted(n_answer.items(), key=lambda x:x[1],reverse = True))
answer = list(n_answer.keys())
return answer
테스트 5,9번은 해결되었는데 나머지는 아직 런타임 오류가 났다.
테스트 27은 n이 1일때이었어서 그 조건시 바로 반환해주는 코드를 작성해서 해결했다.
다시 살펴보니 내가 코드를 바꿔쓰다가 answer[i] == 0을 stages[i]==0으로 잘 못 작성한 걸 발경했다. 헷갈리지않게 주석 다는 습관을 들여야지....아래는 수정한 코드이다.
def solution(N, stages):
answer = [0]*(N+2) #지나간 사람들 수 리스트
n_answer = {} #실패율담는딕셔너리
counts = [0]*(N+2) #머무는 사람들 수
if N == 1: #1일경우 바로 반환하기
answer[0] = N
return answer[0:1]
for stage in stages:
for j in range(1,stage+1):
answer[j] += 1
counts[stage] += 1
answer[N+1],answer[0] = 0, 0
for i in range(1,N+1):
if counts[i] ==0 or answer[i]==0:#잘못작성한 부분..
n_answer[i] = 0
else:
n_answer[i] = counts[i]/answer[i]
n_answer = dict(sorted(n_answer.items(), key=lambda x:x[1],reverse = True))
answer = list(n_answer.keys())
return answer
728x90
반응형
'Python공부 > 프로그래머스' 카테고리의 다른 글
(Python) 다트게임 (프로그래머스 Lv.1)/.isdigit() (0) | 2023.06.19 |
---|---|
(Python) 공원 산책 (프로그래머스 Lv.1) (0) | 2023.06.19 |
(Python) 모의고사 (프로그래머스 Lv1) (0) | 2023.06.16 |
(Python) 과일 장수 (프로그래머스 Lv.1) (0) | 2023.06.16 |
(Python) 명예의 전당(1) (프로그래머스 Lv.1) (0) | 2023.06.16 |