-
[백준 / Python] 1205번 등수 구하기 | 초코더알고리즘/백준 2020. 1. 16. 19:36
https://www.acmicpc.net/problem/1205
1205번: 등수 구하기
첫째 줄에 N, 송유진의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보다 작거나 같은 자연수 또는 0이다. 둘째 줄에는 현재 랭킹 리스트에 있는 점수가 비오름차순으로 주어진다. 둘째 줄은 N이 0보다 큰 경우에만 주어진다.
www.acmicpc.net
접근법
새로 들어온 점수를 append()함수로 추가하고 정렬해줍니다.
그리고 새로 들어온 점수의 등수를 index()함수를 이용해 구해줍니다.
그런데 두번째 입출력 예와 같이 새로들어온 점수가 마지막 점수와 같으면서, N과 P가 같으면
-1을 반환해야 합니다. 예를 들어 다음과 같은 입력이 들어오면
5 1 5
5 4 3 2 1
새로들어온점수는(=1) 마지막 점수인 '1'과 같습니다. 그리고 N=5와 P=5 또한 같으므로 1은 5등을 출력하는 것이 아닌 랭킹의 범위를 넘었다고 간주하여 '-1'을 반환합니다.
나의 풀이
import sys n,yj,p=input().split() nums=list(map(int,sys.stdin.readline().split())) over=0 if int(p)==0: #랭킹 길이가 0이면 -1반환 print(-1) elif int(n)==0: #입력 점수가 0개면 1등반환 print(1) else: nums.append(int(yj)) #yj의 점수 추가 nums.sort(reverse=True) #정렬 if nums.index(int(yj))+1 > int(p): #yj의 등수가 랭킹 범위를 넘으면 print(-1) #-1반환 else: if int(yj) == nums[-1] and int(n)==int(p):#yj점수==마지막점수 AND n==p print(-1) #-1 반환 else: print(nums.index(int(yj))+1)
'알고리즘 > 백준' 카테고리의 다른 글
[백준 / Python] 2606번 바이러스 | 초코더 (0) 2020.01.17 [백준 / Python] 1260번 DFS와 BFS | 초코더 (0) 2020.01.17 [백준 / Python] 2399번 거리의 합 | 초코더 (1) 2020.01.15 [백준 / Python] 2959번 거북이 | 초코더 (0) 2020.01.14 [백준 / Python] 5052번 전화번호 목록 | 초코더 (1) 2020.01.14