본문 바로가기
알고리즘

[백준 8979 올림픽][파이썬]

by Jyujae 2022. 5. 3.

https://www.acmicpc.net/problem/8979

--풀이

 

마지막 for문 풀이

if data 안에 찾고자하는 index 번호와 같은 메달을 딴 나라가 있다면:

-> 즉, 자기 자신도 data 안에 있기 때문에 포함됨. 그래서 같지 않을 경우에 else: print(q) 같은 조건이 필요 X

print(q+1)

-> index 번호에서 1을 더한 값을 출력(순위)

 

ex 1) index로 찾고자 하는 값이 자신과 일치하여 출력되는 경우

input:

4 3
1 1 2 0
2 0 1 0
3 0 1 0
4 0 0 1

 

data=[ [1,1,2,0], [2,0,1,0], [3,0,1,0], [4,0,0,1] ]

k -> 3

index=i=2

 

q=0

N/A

 

q=1

data[2][1:]==data[1][1:]

3, 0,1,0     ==     2,0,1,0

q=1(2등)

break

 

 

ex 2) index로 찾고자 하는 값이 동일한 값으로 서칭되어 출력되는 경우

input:

4 2
1 3 0 0
3 0 0 2
4 0 2 0
2 0 2 0

 

data=[ [1,3,0,0], [4,0,2,0], [2,0,2,0], [3,0,0,2] ]

k -> 2

index=i=2

 

q=0

N/A

 

q=1

data[2][1:]== data[1][1:]

2,0,2,0     ==   4,0,2,0

q=1(2등)

 

 

중복된 순위를 찾는 알고리즘은 for문으로  탐색하여 index번호를 base로 출력하게 하고,

중복되는 값은 큰 순위를 기준으로 하기 때문에, index가 가장 큰 값을 기준으로 순위를 부여하자