alpyrithm_알파이리즘

[알고리즘][Python] 백준(BOJ) 1205 등수 구하기_파이썬 본문

Algorithm/백준 알고리즘_Python

[알고리즘][Python] 백준(BOJ) 1205 등수 구하기_파이썬

알파이 2020. 8. 15. 08:55

 

1205 등수 구하기    https://www.acmicpc.net/problem/1205

 

1205번: 등수 구하기

첫째 줄에 N, 송유진의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000��

www.acmicpc.net

 

 

 

 

 

 

문제 풀기 전 공부할 것 : 문제 해석

 

 

 

 

 

 

 

 

 

풀이 1

<내용>

  • 0 <= n <= p이고 둘째 줄은 n이 0보다 큰 경우에만 주어지므로 n == 0일 때와 n > 0인 경우로 나눈다.
  • n == 0이면 10 <= p <= 50이므로 랭킹은 1이 된다.
  • n > 0인 경우
    • n == p이면서 랭킹 중 가장 작은 점수가 새로운 점수보다 크거나 같다면 -1을 출력한다.
    • 그 외의 경우 랭킹 점수를 for문으로 돌면서 랭킹의 점수가 새로운 점수보다 작거나 같으면 그 등수가 새로운 점수의 등수가 된다.
    • for문을 돌았지만 새로운 점수보다 작거나 같은 점수가 없다면 n+1이 새로운 점수가 된다.

 

 

<코드>

n, new, p = map(int, input().split())
if n == 0:
    print(1)
else:
    score = list(map(int, input().split()))
    if n == p and score[-1] >= new:
        print(-1)
    else:
        res = n + 1
        for i in range(n):
            if score[i] <= new:
                res = i + 1
                break
        print(res)

 

 

+) score에 새로운 점수를 추가해서 index 찾는 방법으로 해결하기

 

 

 

 

 

 

 

 

풀이 2

<내용>

  • 0 <= n <= p이고 둘째 줄은 n이 0보다 큰 경우에만 주어지므로 n == 0일 때와 n > 0인 경우로 나눈다.
  • n != 0인 경우
    • 점수 리스트에 새로운 점수를 추가하고 정렬한다.
    • 새로운 점수의 등수를 idx에 저장한다.
    • idx(등수)가 p보다 큰 경우 -1을 출력한다.
    • idx(등수)가 p보다 작은 경우
      • 만약 n(랭킹 리스트의 점수의 개수)가 p랑 같을 때 가장 낮은 점수가 새로운 점수라면 이는 랭킹 리스트가 꽉 차있을 때, 새로운 점수가 이전 점수보다 좋지 않은 경우이므로 -1을 출력한다.
      • 그런 경우가 아니면 idx(새로운 점수의 등수)를 출력한다.
  • n == 0이면 10 <= p <= 50이므로 랭킹은 1이 된다.

 

 

<코드>

n, new, p = map(int, input().split())
if n:
    score = list(map(int, input().split()))
    score.append(new)
    score.sort(reverse=True)
    idx = score.index(new) + 1
    if idx > p:
        print(-1)
    else:
        if n == p and new == score[-1]:
            print(-1)
        else:
            print(idx)
    
else:
    print(1)

 

 

 

 

728x90
반응형
Comments