본문 바로가기

CS/알고리즘

백준 1205번 파이썬 풀이: 등수 구하기

랭킹리스트의 크기 P>N: 들어가도 됨

그냥 넣고 인덱스 출력. 

 

P=N, 리스트 꽉 찼음

태수의 점수가 리스트 내부의 무언가보다 더 클 때만 리스트에 넣을 수 있음

리스트가 태수 점수보다 다 크거나 같으면 -1 출력 하는걸로 알고리즘 짰다.

 

다만 현재 리스트가 비어 N=0인 경우 따로 빼서

if N==0부터 해줘야 하는데 그러지 않아서 한번 틀렸다.

리스트 안의 점수를 받는 두번째 입력을 기다리며 커서가 머물러있었기 때문에 백준 퍼센트가 99%까지 정답이다가

마지막에 틀렸습니다! 아앗. 꽝.

 

아래는 내 풀이 코드. 맞았다고 뜬다.

import sys
#T는 태수의 새로운 점수
rankList=[]
N, T, P= map(int, sys.stdin.readline().split())
if N==0: #현재 리스트에 아무것도 없음
    print(1)
else:
    rankList= list(map(int, sys.stdin.readline().split()))
    
    #rankList는 크기 P인 리스트
    #P는 랭킹 리스트에 올라 갈 수 있는 점수의 개수
    okToIn=False
    sameExist=False
    
    if P>N:#리스트에 들어갈 공간 있음
        rankList.append(T)
        rankList.sort(reverse=True) #sort랑 sorted 또또! 주의
        print(rankList.index(T)+1)
    else:#리스트에 들어갈 공간 없음
        for s in rankList:
            if s<T:
                okToIn=True
        if (okToIn==True):
            rankList.append(T)
            rankList.sort(reverse=True) #sort랑 sorted 또또! 
            print(rankList.index(T)+1)
        else:
            print(-1)