https://www.acmicpc.net/problem/8979
8979번: 올림픽
입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각
www.acmicpc.net
아이디어
- 금메달, 은메달, 동메달 순으로 정렬 후
- 리스트의 값 만큼 반복
- 만약 현재 데이터의 금메달, 은메달, 동메달의 갯수가 바로 이전 값과 같다면 grade를 i로
- 아니라면 i값만 1 증가
- 현재 국가를 나타내는 정수와 K가 같으면 grade출력 후 반복문 종료
전체 코드
N, K = map(int, input().split())
datas = [[int(x) for x in input().split()] for _ in range(N)]
datas.sort(key=lambda x : [x[1], x[2], x[3]], reverse=True)
i = 1
grade = 1
pre_gold, pre_silver, pre_bronze = datas[0][1], datas[0][2], datas[0][3]
for n, gold, silver, bronze in datas:
if pre_gold != gold or pre_silver != silver or pre_bronze != bronze:
grade = i
pre_gold, pre_silver, pre_bronze = gold, silver, bronze
i += 1
if n == K:
print(grade)
break
set으로 for문 부분을 최적화 할 수 있을 것 같은데..!! 나중에 도전해봐야겠다!
'Coding Test > Python' 카테고리의 다른 글
| [백준/그리디] 1449번: 수리공 항승 (실버3, python) (0) | 2024.03.13 |
|---|---|
| [백준/BFS&DFS] 1926번: 그림 (python, 실버 1) (0) | 2024.03.11 |
| [백준/union-find] 1717번: 집합의 표현(골드5, python) (0) | 2024.02.15 |
| [LeetCode] 47. Permutations II (Medium, Python) (1) | 2024.02.14 |
| [LeetCode] 46. Permutations (Medium, Python) (0) | 2024.02.14 |