๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/๋ฐฑ์ค€

[๋ฐฑ์ค€] 8978 ์˜ฌ๋ฆผํ”ฝ (ํŒŒ์ด์ฌ/python)

by chjcoder 2023. 9. 18.

๐ŸŽˆ๋ฌธ์ œ

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 ๋ถ€ํ„ฐ๋Š” ๊ณต๋™์ˆœ์œ„ ์—ฌ๋ถ€๋ฅผ ๋”ฐ์ ธ๋ณด๋ฉฐ ์ˆœ์œ„๋ฅผ ์ ์šฉํ•ด์ค€๋‹ค.