Softeer_[인증평가(5차) 기출] 성적 평가

Eugenius1st·2023년 2월 17일
0

Python_algorithm

목록 보기
81/83
post-thumbnail

문제

코드(시간초과)

3중 for 문으로

for i in range(3):
     for j in range(N):
         tmp = 1
         res[j] += point[j]     
         for k in range(N):
             if point[j] < point[k]: 
                 tmp += 1
         rank[j]=tmp                
     print(" ".join(map(str,rank)))
     # print(*rank)

돌리니 시간초과 나서 dict 사용해서
sort 하니 괜찮았다.

코드는 더러웠지만..

코드(성공)

import sys
input = sys.stdin.readline
N = int(input())

score = [0] * N
rank = [0] * N
total = [0] * N
result =[0] * N
# 값, 인덱스 로 자료 저장 후 순위 따로 정리 후 인덱스 별로 sort 한 후 출력
for i in range(3):
    point = list(map(int,input().split()))
    for j in range(N):
        score[j] = (point[j],j)
        total[j] += point[j] 
    score.sort(reverse=True) 
    # 큰 수대로 정렬되는 중
    tmp = 1
    for k in range(N):
        if k == 0: 
            rank[k] = (tmp,score[k][1])
            continue
        if score[k-1][0] == score[k][0]:
            tmp+=1
            rank[k] = (rank[k-1][0],score[k][1])
        else:
            tmp+=1
            rank[k] = (tmp,score[k][1])
    rank.sort(key=lambda x:x[1])
    for res in range(len(rank)):
        result[res] = rank[res][0]
        
    print(*result)

tmp = 1
for j in range(N):
    score[j] = (total[j],j)
score.sort(reverse=True) 
for k in range(N):
    if k == 0: 
        rank[k] = (tmp,score[k][1])
        continue
    if score[k-1][0] == score[k][0]:
        tmp+=1
        rank[k] = (rank[k-1][0],score[k][1])
    else:
        tmp+=1
        rank[k] = (tmp,score[k][1])
rank.sort(key=lambda x:x[1])
for res in range(len(rank)):
    result[res] = rank[res][0]
        
print(*result)   

for문 안에 for문 한번 더 돌릴바에
밖에서 for문이랑 sort를 오지게 하는게 낫구나.

홀리,,

profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글