https://www.acmicpc.net/problem/8979
8979번: 올림픽
입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각
www.acmicpc.net

풀이2
찾아야하는 나라의 성적과 똑같은 성적을 가진 나라를 내림차순으로 찾아서 제일 먼저 찾은 국가의 인덱스 값을 사용하면 된다.
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
score = [list(map(int, input().split())) for _ in range(n)]
score.sort(key = lambda x : (x[1], x[2], x[3]), reverse = True)
for i in range(n):
if score[i][0] == k:
target = score[i][1:]
break
for idx,nation in enumerate(score, 1):
if target == nation[1:]:
print(idx)
break
출력결과

풀이2
찾아야하는 나라의 성적과 똑같은 성적을 가진 나라를 내림차순으로 찾아서 제일 먼저 찾은 국가의 인덱스 값을 사용하면 된다.
대신 앞 풀이와 달리 찾을때 마다 -1 을 해준다.
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
score = [list(map(int, input().split())) for _ in range(n)]
score.sort(key = lambda x : (x[1], x[2], x[3]), reverse = True)
for i, args in enumerate(score, 1):
if args[0] == k:
rank = i
target = score[rank-1][1:]
for idx,g,s,b in score:
if idx == k:
print(rank)
break
elif [g, s, b] == target:
rank -= 1
출력결과

'백준 > 그리디' 카테고리의 다른 글
[백준] 15904번 UCPC는 무엇의 약자일까? - 파이썬 (0) | 2022.05.06 |
---|---|
[백준] 15552번 빠른 A+B - 파이썬 (0) | 2022.02.28 |
[백준] 2798번 블랙잭 - 파이썬 (0) | 2022.02.21 |
[백준] 1978번 소수 찾기 - 파이썬 (0) | 2022.02.20 |
[백준] 1676번 팩토리얼 0의 개수 - 파이썬 (0) | 2022.02.19 |
https://www.acmicpc.net/problem/8979
8979번: 올림픽
입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각
www.acmicpc.net

풀이2
찾아야하는 나라의 성적과 똑같은 성적을 가진 나라를 내림차순으로 찾아서 제일 먼저 찾은 국가의 인덱스 값을 사용하면 된다.
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
score = [list(map(int, input().split())) for _ in range(n)]
score.sort(key = lambda x : (x[1], x[2], x[3]), reverse = True)
for i in range(n):
if score[i][0] == k:
target = score[i][1:]
break
for idx,nation in enumerate(score, 1):
if target == nation[1:]:
print(idx)
break
출력결과

풀이2
찾아야하는 나라의 성적과 똑같은 성적을 가진 나라를 내림차순으로 찾아서 제일 먼저 찾은 국가의 인덱스 값을 사용하면 된다.
대신 앞 풀이와 달리 찾을때 마다 -1 을 해준다.
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
score = [list(map(int, input().split())) for _ in range(n)]
score.sort(key = lambda x : (x[1], x[2], x[3]), reverse = True)
for i, args in enumerate(score, 1):
if args[0] == k:
rank = i
target = score[rank-1][1:]
for idx,g,s,b in score:
if idx == k:
print(rank)
break
elif [g, s, b] == target:
rank -= 1
출력결과

'백준 > 그리디' 카테고리의 다른 글
[백준] 15904번 UCPC는 무엇의 약자일까? - 파이썬 (0) | 2022.05.06 |
---|---|
[백준] 15552번 빠른 A+B - 파이썬 (0) | 2022.02.28 |
[백준] 2798번 블랙잭 - 파이썬 (0) | 2022.02.21 |
[백준] 1978번 소수 찾기 - 파이썬 (0) | 2022.02.20 |
[백준] 1676번 팩토리얼 0의 개수 - 파이썬 (0) | 2022.02.19 |