๐๋ฌธ์
https://www.acmicpc.net/problem/8979
๐์๊ณ ๋ฆฌ์ฆ ๋ฐ ์ ๊ทผ
๊ตฌํ, ์ ๋ ฌ
1. ๊ธ,์,๋ ๋ฉ๋ฌ ๊ฐ์ ์์๋ก ์ ๋ ฌ์ ์์ผ๋์ ๋ค
2. ๊ณต๋์์๋ฅผ ๊ณ ๋ คํ์ฌ ์์๋ฅผ ๋งค๊ฒจ์ฃผ๋ฉด ๋๋ ๋ฌธ์ ์ด๋ค.
๐ป์ฝ๋
# 8979 ์ฌ๋ฆผํฝ
# ์
๋ ฅ ๋ฐ๊ธฐ
n,k = map(int,input().split())
n_lst = [list(map(int,input().split())) for _ in range(n)]
# ๊ธ,์,๋ ๋ฉ๋ฌ ๊ฐ์ ์์๋ก ์ ๋ ฌ
n_lst = sorted(n_lst,key=lambda x:(x[1],x[2],x[3]),reverse=True)
# print(n_lst)
rank = 1 # ์์
cnt = 0 # ๊ฐ์ ์์ ์นด์ดํธ
pre = n_lst[0][1:] # ๋ค์ ์์์์ ๋น๊ต๋ฅผ ์ํด ๋ฉ๋ฌ ๊ฐ์ ์ ์ฅ
if n_lst[0][0] == k: # 1๋ฑ์ด๋ฉด
print(rank)
else:
for i in range(1,n):
if n_lst[i][1:] == pre: # ๋ฉ๋ฌ ๊ฐ์๊ฐ ๊ฐ์ผ๋ฉด ๊ณต๋์์ ์ด๋ฏ๋ก
cnt += 1 # ๊ฐ์ ์์ +1
else: # ๋ฉ๋ฌ ๊ฐ์๊ฐ ๋ค๋ฅด๋ฉด rank +
pre = n_lst[i][1:]
rank += cnt+1
cnt = 0
if n_lst[i][0] == k:
print(rank)
break
๐์ฝ๋ ์ค๋ช
์ด๋ฐ ๋ฌธ์ ์ ๊ฒฝ์ฐ ๋ง์น ์ํ์์ ์ ํ์๊ณผ ๊ฐ์ด ๋ด๊ฐ ์ธ์ด ๊ท์น์ด ์ด๋์๋ถํฐ ์ ํจํ์ง๋ฅผ ์๊ฐํด๋ณด๊ณ ์ฝ๋๋ฅผ ์ง๋ ๊ฒ์ด ์ค์ํ๋ค.
1. ์ ๋ ฌ์ด ๋ n_lst์์, ์ฒซ ๋ฒ์งธ idx์ ๊ฒฝ์ฐ ๋ ๋ฒ์งธ idx์ ๊ณต๋ ์์์ผ์ง๋ผ๋ ๋ฌด์กฐ๊ฑด 1๋ฑ์ด๋ค. ๋ฐ๋ผ์ ๊ณต๋ ์์๋ฅผ ๋ฐ์ ธ๋ณผ ํ์๊ฐ ์๋ค.
2. ์ด ๋ฌธ์ ์ ํต์ฌ์ธ ๊ณต๋์์์ ๊ฒฝ์ฐ ๋ ๋ฒ์งธ idx๋ถํฐ ์ ์ฉ๋๋ค.
3. ๋ฐ๋ผ์ 1๋ฒ์งธ idx์ ์ ๋ณด๋ฅผ ๋ฏธ๋ฆฌ ๊ธฐ์ตํด๋๊ณ 2๋ฒ์งธ idx ๋ถํฐ๋ ๊ณต๋์์ ์ฌ๋ถ๋ฅผ ๋ฐ์ ธ๋ณด๋ฉฐ ์์๋ฅผ ์ ์ฉํด์ค๋ค.
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1459 ๊ฑท๊ธฐ (ํ์ด์ฌ/python) (0) | 2023.10.03 |
---|---|
[๋ฐฑ์ค] 14502 ์ฐ๊ตฌ์ (ํ์ด์ฌ/python) (0) | 2023.09.25 |
[๋ฐฑ์ค] 1083 ์ํธ(ํ์ด์ฌ/python) (1) | 2023.08.27 |
[๋ฐฑ์ค] 2531 ํ์ ์ด๋ฐฅ(ํ์ด์ฌ/python) (0) | 2023.08.23 |
[๋ฐฑ์ค] 14940 ์ฌ์ด ์ต๋จ๊ฑฐ๋ฆฌ(ํ์ด์ฌ/python) (0) | 2023.08.21 |