https://www.acmicpc.net/problem/28017
๋ํ ์ด๋ฐ์ ์ฝ์งํ๋ค๊ฐ DP์ธ๊ฑธ ๊นจ๋ซ๊ณ ํด๊ฒฐํ๋ค. pypy๋ก ์ ์ถ, ์ดํ python์ผ๋ก ๋ค์ ์ ์ถ.
์์ด๋์ด
1. ๋ฐ๋ณต๋ฌธ
- ๋จ์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์์ฑํ๋ค ์คํจํ๋ค.
2. DP
- nํ์ฐจ์ ๊ฐ ๋ฌด๊ธฐ๋ง๋ค ์ฌ ์ ์๋ ์๊ฐ์ ์ ์ฅํ๋ฉด ๋๋ค.
- ์ ์ด๋ฏธ์ง์ฒ๋ผ ์ด์ ํ์ ์๋ ๊ฐ ์ค ์ต์๊ฐ์ ๋ค์ ํ์ ๋ํด๊ฐ๋ฉฐ ์ ๋ฐ์ดํธํ๋ฉด ๋๋ค.
- ์ต์ข ์ ์ผ๋ก ๋ง์ง๋ง ํ์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ฉด ๋๋ค.
์ ์ฒด ์ฝ๋ - pypy๋ก ์ ์ถ
import sys
INF = int(1e9)
N, M = map(int, input().split())
arr = []
for _ in range(N):
arr.append([int(x) for x in sys.stdin.readline().split()])
for i in range(N - 1):
for j in range(M):
temp = INF
for k in range(M):
if arr[i][k] <= temp and j != k:
temp = arr[i][k]
arr[i + 1][j] += temp
print(min(arr[N - 1]))
์ฝ๋ ์ค๋ช
for i in range(N - 1):
for j in range(M):
temp = INF
for k in range(M):
if arr[i][k] <= temp and j != k:
temp = arr[i][k]
arr[i + 1][j] += temp
์ ์ค๋ช ํ ๋ถ๋ถ์ ์ฝ๋๋ก ๊ตฌํํ ๊ฒ์ด๋ค.
for๋ฌธ์ 3๊ฐ๋ผ python์ผ๋ก ์ ์ถ ์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํด pypy๋ก ์ ์ถํ๋ค.
์ถ๊ฐ) ์ ์ฒด ์ฝ๋ - python3๋ก ์ ์ถ
import sys
N, M = map(int, input().split())
arr = []
for _ in range(N):
arr.append([int(x) for x in sys.stdin.readline().split()])
for i in range(N - 1):
for j in range(M):
temp = min(arr[i][:j] + arr[i][j + 1:])
arr[i + 1][j] += temp
print(min(arr[N - 1]))
ํ์ด์ฌ์ slicing ๊ธฐ๋ฅ์ ์ฌ์ฉํด ์๊ฐ์ ๋จ์ถ์ํฌ ์ ์๋ค.
python3๋ก ์ ์ถํ๋ ํต๊ณผํ๋ค.
๊ทธ๋ฆฌ๊ณ arr์์ ์ด์ ํ์ ์ ๋ณด๋ ํ์ ์์ผ๋ฏ๋ก ์ด๋ฅผ ์ด์ฉํด ๋ฐฐ์ด ํฌ๊ธฐ๋ ์ค์ผ ์ ์๋ค.
'๐งฉ Problem Solving > [๋ฐฑ์ค]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 28250 ์ด๋ธ, ํ์์ผ ๊ทธ๋ฆฌ๊ณ ํธ๋ฅธ MEX์ ์๋ด (C++ cpp) (0) | 2023.07.03 |
---|---|
[๋ฐฑ์ค] 28250 ์ด๋ธ, ํ์์ผ ๊ทธ๋ฆฌ๊ณ ํธ๋ฅธ MEX์ ์๋ด (python ํ์ด์ฌ) (0) | 2023.07.03 |
[๋ฐฑ์ค] 9205 ๋งฅ์ฃผ ๋ง์๋ฉด์ ๊ฑธ์ด๊ฐ๊ธฐ (python ํ์ด์ฌ) (0) | 2023.04.09 |
[๋ฐฑ์ค] 1759 ์ํธ๋ง๋ค๊ธฐ (python ํ์ด์ฌ) (0) | 2023.03.30 |
[๋ฐฑ์ค] 11559 puyopuyo (ํ์ด์ฌ python) (0) | 2023.03.26 |