본문 바로가기

코테연습문제

[백준/Python] 1205 등수 구하기

 

구현은 쉽게 했는데, 계속 틀렸다고 나옴;;;

아직도 뭐가 문제인지 모르겠어서 구글링 했다....

에휴.........;

 

그리고 처음에 비오름차순이 내림차순이라는 뜻인지 아님 sorting이 안되어 있다는 뜻인지 헷갈렸다;;

 

n, s, p = map(int, input().split())

if n == 0:
    print(1)
else:
    scores = [int(i) for i in input().split()]
    if n == p and scores[-1] >= s:
        print(-1)
    else:
        rank = n + 1
        for i in range(n):
            if scores[i] <= s:
                rank = i + 1
                break
        print(rank)

풀이과정

1. 랭킹에 올라갈 수 있는 수와 리스트에 있는 점수의 개수가 같다면,

마지막 점수와 내 점수를 비교해서, 내 점수가 작거나 같다면, 내가 랭킹에 올라갈 수 없게 되는 것이므로 -1을 출력

 

2. rank = n+1로 설정한 뒤, 내 점수보다 작거나 같은 수를 만날 때, 그 점수 앞에 세우면서 순위를 rank = i + 1로 설정


아래 코드는 내가 처음에 쓴 코드인데, 아직도 뭐가 잘못됐는지 모르겠다..

N, s, P = map(int, input().split())
if 10 <= P <= 50 and 0 <= N <=P and N > 0:
    scores = [int(i) for i in input().split()]
    rank = []
    for score in scores:
        if score > s:
            rank.append(score)
        elif score == s:
            rank.append(score)
            print(len(rank))
            break
        elif score < s:
            print(len(rank) + 1)
            break
else:
    print(1)