100점 코드,
sys.readline()으로 실행시간을 줄였고
cnt2 를 줘서 같은 등수를 가졌을 때는 등수가 오르지 않는 대신
그 다음 등수를 가진 나라는 cnt2를 그 수치만큼 더하고, cnt2를 0으로 초기화해서 다음에 나올 같은 등수 국가들을 처리하는 과정을 가졌다.
import sys;
# 실버 5
N,K = map(int,sys.stdin.readline().split())
arr = [list(map(int,input().split())) for _ in range(N)]
arr.sort(key=lambda x : (x[1],x[2],x[3]),reverse=True)
# 같은 등수일 때 어떻게 표현할까
cnt = 0
cnt2 = 0
for i in range(len(arr)):
if arr[i][1:4] != arr[i-1][1:4]:
cnt += 1
cnt += cnt2
cnt2 = 0
else:
cnt2 += 1
arr[i].append(cnt)
for x in arr:
if x[0] == K:
print(x[4])
20점 짜리 코드
1. 가중치를 줘서 해결하려고했으나,
가중치로 풀이하면 안되는 문제였음
2. 등수 표현할 떄
1 2 2 4 이렇게 표현되는 것이 아닌
1 2 2 3 으로 표현되는 코드를 작성했음
# 실버 5
N,K = map(int,input().split())
arr = [list(map(int,input().split())) for _ in range(N)]
new_arr = []
for i in arr:
sum_v = i[1] * 3 + i[2]* 2 + i[3]* 1
new_arr.append([i[0],sum_v])
new_arr.sort(key=lambda x : x[1],reverse=True)
# 같은 등수일 때 어떻게 표현할까
cnt = 0
for i in range(len(new_arr)):
if new_arr[i][1] != new_arr[i-1][1]:
cnt += 1
else:
pass
new_arr[i].append(cnt)
for x in new_arr:
if x[0] == K:
print(x[2])
'알고리즘 문제풀이' 카테고리의 다른 글
백준 1418 K-세준수 Python 수학 소수 브루트포스 (0) | 2024.03.14 |
---|---|
백준 25496 장신구 명장 임스 Python 그리디 정렬 실버5 (0) | 2024.03.14 |
백준 1652. 누울 자리를 찾아라 Python 구현 문자열 실버5 (0) | 2024.03.12 |
백준 1978 소수찾기 Python 수학 소수 브론즈2 (1) | 2024.03.12 |
백준 11651 좌표 정렬하기 2 Python 정렬 실버5 (0) | 2024.03.11 |