728x90
하...레벨1은 풀어야지 친구야
# 대망의 첫 시도
def solution(N, stages):
left = len(stages)
answer = [0]*(N)
fail = [0]*N
used = [0]*N
for i in range(1, N+1):
for j in stages:
if i==j:
fail[i-1] += 1
temp = fail[i-1]
fail[i-1] /= left
left -= temp
# fail = fail.sort()
for i in range(N):
answer[i] = (fail.index(max(fail))+1)
fail[fail.index(max(fail))] = -1
print(answer)
return answer
solution(5, [2, 1, 2, 6, 2, 4, 3, 3])
무지성 2중for문 돌림
처참하게 실패
나는 이게 2중for문 때문인 줄 알고ㅋㅋ 그거를 하나로 줄임
# 두 번째 시도
def solution(N, stages):
left = len(stages)
answer = [0]*(N)
fail = [0]*N
for i in range(len(stages)):
if stages[i]>N:
continue
fail[stages[i]-1]+=1
for i in range(1, N+1):
temp = fail[i-1]
fail[i-1]/=left
left -= temp
for i in range(N):
answer[i] = (fail.index(max(fail))+1)
fail[fail.index(max(fail))] = -1
print(answer)
return answer
solution(5, [2, 1, 2, 6, 2, 4, 3, 3])
for문 줄이는 데는 성공했지만 여전히...시간이 오버되는 거야
이러다가 40분 날라감
코테였으면 나가리였을 거임
아아아아아아
열심히살자
...
뭔가 잘못되었음을 깨닫고 서치갈김
친절한 사람들은 아름다운 테스트케이스를 주셨음
solution(8,[1,2,3,4,5,6,7] )
이렇게 하면 케이스마다 넣고 0이 하나 더 남아서 마지막 마지막 left도 돌아가게됨
맞음 divided by 0...실패율 구할 때 left로 자꾸 나눴는데 left가 0이 될 거란 생각을 못했음...
# 최종...
def solution(N, stages):
left = len(stages)
answer = [0]*N
fail = [0]*N
for i in range(left):
if stages[i]>N:
continue
fail[stages[i]-1]+=1
for i in range(1, N+1):
temp = fail[i-1]
if left!=0:
fail[i-1]/=left
left -= temp
a = sorted(fail, reverse=True)
for i in range(N):
answer[i] = fail.index(a[i])+1
fail[fail.index(a[i])]=-1
print(answer)
return answer
solution(8,[1,2,3,4,5,6,7] )
앞으로 나누기를 할 때는 꼭 저 예외처리를 하자!!!!
728x90
'TIL' 카테고리의 다른 글
#0711 코루틴과 비동기처리 (0) | 2022.07.18 |
---|---|
[안드로이드] [코틀린] 리사이클러뷰에 뷰바인딩 적용하기 (0) | 2022.07.05 |
#0616 (0) | 2022.06.16 |
#0531 스위프트 옵셔널 바인딩, 외부 파라미터 (0) | 2022.05.31 |
#0530 okhttp 연동하기, 안드로이드 협업시 주의할점, 깃 사용법 (0) | 2022.05.30 |