๋ฌธ์
๋น์ ์ ์ ๋ช ํ๋ก๊ทธ๋๋ฐ ๋ํ์ธ KCPC(Korean Collegiate Programming Contest)์ ์ฐธ๊ฐํ๊ณ ์๋ค. ์ด ๋ํ์์ ์ด k๊ฐ์ ๋ฌธ์ ๋ฅผ ํ๊ฒ ๋๋๋ฐ, ์ด๋ค ๋ฌธ์ ์ ๋ํ ํ์ด๋ฅผ ์๋ฒ์ ์ ์ถํ๋ฉด ๊ทธ ๋ฌธ์ ์ ๋ํด 0์ ์์ 100์ ์ฌ์ด์ ์ ์๋ฅผ ์ป๋๋ค. ํ์ด๋ฅผ ์ ์ถํ ํ์ ID, ๋ฌธ์ ๋ฒํธ, ์ ์๊ฐ ์๋ฒ์ ๋ก๊ทธ์ ์ ์ถ๋๋ ์๊ฐ ์์๋๋ก ์ ์ฅ๋๋ค. ํ ๋ฌธ์ ์ ๋ํ ํ์ด๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ์ถํ ์ ์๋๋ฐ, ๊ทธ ์ค ์ต๊ณ ์ ์๊ฐ ๊ทธ ๋ฌธ์ ์ ๋ํ ์ต์ข ์ ์๊ฐ ๋๋ค. (๋ง์ฝ ์ด๋ค ๋ฌธ์ ์ ๋ํด ํ์ด๋ฅผ ํ๋ฒ๋ ์ ์ถํ์ง ์์์ผ๋ฉด ๊ทธ ๋ฌธ์ ์ ๋ํ ์ต์ข ์ ์๋ 0์ ์ด๋ค.)
๋น์ ํ์ ์ต์ข ์ ์๋ ๊ฐ ๋ฌธ์ ์ ๋ํด ๋ฐ์ ์ ์์ ์ดํฉ์ด๊ณ , ๋น์ ์ ์์๋ (๋น์ ํ๋ณด๋ค ๋์ ์ ์๋ฅผ ๋ฐ์ ํ์ ์)+1 ์ด๋ค.
์ ์๊ฐ ๋์ผํ ํ์ด ์ฌ๋ฟ ์์ ์ ์๋๋ฐ, ๊ทธ ๊ฒฝ์ฐ์๋ ๋ค์ ๊ท์น์ ์ํด์ ์์๊ฐ ์ ํด์ง๋ค.
- ์ต์ข ์ ์๊ฐ ๊ฐ์ ๊ฒฝ์ฐ, ํ์ด๋ฅผ ์ ์ถํ ํ์๊ฐ ์ ์ ํ์ ์์๊ฐ ๋๋ค.
- ์ต์ข ์ ์๋ ๊ฐ๊ณ ์ ์ถ ํ์๋ ๊ฐ์ ๊ฒฝ์ฐ, ๋ง์ง๋ง ์ ์ถ ์๊ฐ์ด ๋ ๋น ๋ฅธ ํ์ ์์๊ฐ ๋๋ค.
๋์์ ์ ์ถ๋๋ ํ์ด๋ ์๊ณ , ๋ชจ๋ ํ์ด ์ ์ด๋ ํ ๋ฒ์ ํ์ด๋ฅผ ์ ์ถํ๋ค๊ณ ๊ฐ์ ํ๋ผ.
์๋ฒ์ ๋ก๊ทธ๊ฐ ์ฃผ์ด์ก์ ๋, ๋น์ ํ์ ์์๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ ๋ ฅ ๋ฐ์ดํฐ๋ ํ์ค ์ ๋ ฅ์ ์ฌ์ฉํ๋ค. ์ ๋ ฅ์ T๊ฐ์ ํ ์คํธ ๋ฐ์ดํฐ๋ก ๊ตฌ์ฑ๋๋ค. ์ ๋ ฅ์ ์ฒซ ๋ฒ์งธ ์ค์๋ ํ ์คํธ ๋ฐ์ดํฐ์ ์๋ฅผ ๋ํ๋ด๋ ์ ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ๋ฐ์ดํฐ์ ์ฒซ ๋ฒ์งธ ์ค์๋ ํ์ ๊ฐ์ n, ๋ฌธ์ ์ ๊ฐ์ k, ๋น์ ํ์ ID t, ๋ก๊ทธ ์ํธ๋ฆฌ์ ๊ฐ์ m์ ๋ํ๋ด๋ 4 ๊ฐ์ ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ์ฌ๊ธฐ์, 3 ≤ n, k ≤ 100, 1 ≤ t ≤ n, 3 ≤ m ≤ 10,000์ด๋ค. ๊ทธ ๋ค์ m๊ฐ์ ์ค์๋ ๊ฐ ํ์ด์ ๋ํ ์ ๋ณด๊ฐ ์ ์ถ๋๋ ์์๋๋ก ์ฃผ์ด์ง๋ค. ๊ฐ ์ค์๋ ํ ID i, ๋ฌธ์ ๋ฒํธ j, ํ๋ํ ์ ์ s๋ฅผ ๋ํ๋ด๋ ์ธ ๊ฐ์ ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ์ฌ๊ธฐ์ 1 ≤ i ≤ n, 1 ≤ j ≤ k, 0 ≤ s ≤ 100์ด๋ค.
์ถ๋ ฅ
์ถ๋ ฅ์ ํ์ค์ถ๋ ฅ์ ์ฌ์ฉํ๋ค. ์ฃผ์ด์ง ๊ฐ ํ ์คํธ ๋ฐ์ดํฐ์ ๋ํด ๋น์ ํ์ ์์๋ฅผ ํ ์ค์ ์ถ๋ ฅํ์ฌ์ผ ํ๋ค.

๋ฌธ์ ํ์ด
- ๊ฐ ํ ๋ณ๋ก ์ด ์ ์, ์ ์ถ ํ์, ์ ์ถ ์๊ฐ์ ๊ณ์ฐํ๋ ๊ฒ์ ๋จ์ ๊ตฌํ์ผ๋ก ํ์ด์ฃผ๋ฉด ๋๋ค.
- ์ ์ถ ํ์์ ์ ์ถ ์๊ฐ์ team_info์ ์ ์ฅ๋ ๊ฐ ํ์ ์ ๋ณด๋ฅผ ๊ฐ๊ฐ +1ํด์ฃผ๊ณ , ์๋ก์ด ์ ์ถ์๊ฐ์ผ๋ก ๊ฐฑ์ ํด์ฃผ๋ฉด ๋๊ณ , ๊ฐ ๋ฌธ์ ์ ๋ํด์ ๋ ๋์ ์ ์๊ฐ ์ต์ข ์ ์์ด๋ฏ๋ก ์๋ก์ด ์ ์๊ฐ ๋ ๋๋ค๋ฉด ๊ธฐ์กด์ ํด๋น ๋ฌธ์ ์ ์ ์๋ฅผ ์ด ์ ์์์ ๋นผ์ค ๋ค์, ์๋ก์ด ์ ์๋ฅผ ๋ํด์ค๋ค.
- ๊ทธ๋ฆฌ๊ณ ๊ฐ ๋ฌธ์ ๋น ์ ์์ ์๋ก์ด ์ ์๋ฅผ ์ ์ฅํด์ฃผ๋ฉด ๋๋ค.
- ์์๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ์ ์ด ์ ์ ๋ด๋ฆผ์ฐจ์, ์ ์ถ ํ์ ์ค๋ฆ์ฐจ์, ์ ์ถ ์๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํด์ ์ฐ๋ฆฌ ํ์ ์์๋ฅผ ์ฐพ์ผ๋ฉด ๋๋ค.
- ํ์ง๋ง, ์ฒ์์ ๋๋ ์์๋ฅผ ์ฐพ๋ ๊ฒ์ ์ ๋ ฌํ์ง ์๊ณ , ๊ทธ๋ฅ ์ฐ๋ฆฌ ํ์ ์ด ์ ์, ์ ์ถ ํ์, ์ ์ถ ์๊ฐ์ ์ ์ฅํด๋๊ณ , ์ฐ๋ฆฌ ํ๋ณด๋ค ์ด ์ ์๊ฐ ๋์ ํ์ ์ฐพ์ผ๋ฉด +1, ์ด ์ ์๋ ๊ฐ์ง๋ง ์ ์ถ ํ์๊ฐ ๋ ์ ์ ํ์ ์ฐพ์ผ๋ฉด +1, ์ด ์ ์์ ์ ์ถ ํ์๋ ๊ฐ์ง๋ง ์ ์ถ ์๊ฐ์ด ๋ ๋น ๋ฅธ ํ์ ์ฐพ์ผ๋ฉด +1 ํ๋ ๋ฐฉ์์ผ๋ก ์์๋ฅผ ์ฐพ์์ ์ถ๋ ฅํ๊ณ , ์ด ๋ฐฉ์๋ ํต๊ณผ๋ฅผ ๋ฐ๊ธด ํ๋ค!
- ๊ทธ๋๋ ์ด ๋ฌธ์ ์ ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ๊ฐ ์ ๋ ฌ๋ก ๋์ด ์๋ ๊ฒ์ ๋ณด๊ณ , ์ ๋ ฌ์ ์ฌ์ฉํด์ ๋ค์ ์ ์ถํ๋ค.
- ์ฌ๊ธฐ์ sort()๋ฅผ ํ ๋, key ๊ฐ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ ์ ๋ ฌ ๊ธฐ์ค์ผ๋ก ์ค ์ ์๋๋ฐ, ์๋ ์์์ฒ๋ผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ณ ์ถ์ ๋ -๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค.
team_info=[0,0,0,[0]*(k)]*n
- ์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์, ์ฒ์์ [0,0,0,[0]*k] ํํ์ ๋ฐฐ์ด์ ํ์ ๊ฐ์๋งํผ ์ ์ธํด์ฃผ๊ธฐ ์ํด ์๋์ ๊ฐ์ list comprehension์ด ์๋๋ผ ์์ ๊ฐ์ด *์ ์ด์ฉํ ๋ณต์ฌ ํํ๋ก ์ ์ธํ์๋ค.
- ์ด๋ฌ๋ฉด ๊ฐ ๋ฐฐ์ด์ ์ฐธ์กฐ๊ฐ๋ค๋ ํจ๊ป ๋ณต์ฌ๋์ด team_info[1][0]=1์ ์ ์ฅํด์ฃผ๋ฉด team_info[0][0], team_info[2][0]๊น์ง ๋ชจ๋ 1๋ก ์ ์ฅ๋๋ ํ์์ด ์ผ์ด๋ฌ๋ค. ๊ตฌ๊ธ๋งํด๋ณด๋ ์๋์ ๊ฐ์ ๊ธ์ ์ฐพ์ ์ ์์๋ค!
- https://sogogi1000inbun.tistory.com/33
[python] 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๊ณ ์์ ๋ณ๊ฒฝํ๋ ์ฐจ์ด
BFSํ๋ฉด์ ์์ฑํ 2์ฐจ์ ๋ฆฌ์คํธ์ ์์๊ฐ ์ด์ํ๊ฒ ๋ณ๊ฒฝ๋ผ์ ํ์ฐฝ ๊ณ ๋ฏผํ์๋ฐ. ๋ฐ๋ก 39,40 ์ฐ์ฐ์์ ๊ฐ์ด ์ด์ํ๊ฒ ์ฝ์ ๋๋๊ฑฐ๋ค..!!! ์ฒ์์ ๋ฆฌ์คํธ๋ฅผ ์ ๋ ๊ฒ ์ ์ธํ๋๋ฐ, ๋๋ฒ๊น ํ๋ฉด์ ๋ณด๋๊น, 0,
sogogi1000inbun.tistory.com
team_info=[[0,0,0,[0]*(k),t_id] for t_id in range(n)]
- ๊ฒฐ๋ก : ์์ ๊ฐ์ ๊ฒฝ์ฐ, list comprehension์ ์ฌ์ฉํ์
import sys
t=int(sys.stdin.readline())
for _ in range(t):
n,k,t,m=map(int, sys.stdin.readline().split(' '))
# n๊ฐ์ ํ์ ๋ํ ์ ๋ณด ๋ฐฐ์ด
# ์ด ์ ์, ์ ์ถํ์, ์ ์ถ์๊ฐ, ๋ฌธ์ ๋ฒํธ๋ณ ์ ์
team_info=[[0,0,0,[0]*(k),t_id] for t_id in range(n)]
for time in range(m):
team, pnum, score = map(int, sys.stdin.readline().split(' '))
# ์ ์ถ ํ์, ์ ์ถ ์๊ฐ ๊ฐฑ์
team_info[team - 1][1] += 1
team_info[team-1][2] = time
# ํด๋น ๋ฌธ์ ์ ํ์ฌ ์ ์๋ณด๋ค ์๋ก์ด ์ ์๊ฐ ๋ ๋๋ค๋ฉด, ์ ์ ๊ฐฑ์
if team_info[team-1][3][pnum-1]<score:
team_info[team-1][0]-=team_info[team-1][3][pnum-1]
team_info[team-1][0]+=score
team_info[team-1][3][pnum-1]=score
team_info.sort(key=lambda x:(-x[0], x[1], x[2]))
for rank in range(n):
if team_info[rank][4]==t-1:
print(rank+1)
break
# ์ง์ ๊ตฌํ
# mscore,mnum,mtime,mpros =team_info[t-1]
# ans=1
# for idx in range(n):
# if idx==t-1:
# continue
# ts, tm, tt, tp=team_info[idx]
# # ์ฐ๋ฆฌํ ์ ์๋ณด๋ค ๋์ ์ ์์ผ ๊ฒฝ์ฐ
# if ts>mscore:
# ans+=1
# # ์ฐ๋ฆฌํ ์ ์์ ๋์ผํ๋ค๋ฉด, ์ ์ถ ํ์๊ฐ ๋ ์ ์์ง ํ์ธ
# elif ts==mscore:
# if tm<mnum:
# ans+=1
# elif tm==mnum:
# # ์ ์ถ ํ์๊ฐ ๋์ผํ๋ค๋ฉด, ์ต์ข
์ ์ถ ์๊ฐ์ด ๋ ๋น ๋ฅธ์ง ํ์ธ
# if tt<mtime:
# ans+=1
# print(ans)
'์๊ณ ๋ฆฌ์ฆ > ๊ตฌํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 2628 ๐ฅ] ์ข ์ด์๋ฅด๊ธฐ (0) | 2023.10.08 |
---|---|
[๋ฐฑ์ค 20006 ๐ฅ] ๋ญํน์ ๋๊ธฐ์ด (1) | 2023.10.07 |
[๋ฐฑ์ค 3967 ๐ฅ] ๋งค์ง ์คํ (0) | 2023.10.07 |
[๋ฐฑ์ค 1138 ๐ฅ] ํ ์ค๋ก ์๊ธฐ (0) | 2023.09.12 |
[๋ฐฑ์ค 24337 ๐ฅ] ๊ฐํฌ์ ํ (0) | 2023.08.15 |