์์ ์บ๊ธฐ(14430๋ฒ)
Silver 2
#๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
https://www.acmicpc.net/problem/14430
๋ฌธ์ ๋ด์ฉ
๋ฌธ์ ์ ๊ทผ
wook์ด 0, 0์์ n, m๊น์ง ์ด๋ํ ๋, ์ค๋ฅธ์ชฝ, ์๋์ชฝ์ผ๋ก๋ง ์ด๋ํ๋ฉด์ ์์์ ์บ ์ ์์ ๋, n, m๊น์ง ๋๋ฌํ์ ๋, ์ป์ ์ ์๋ ์์์ ์ต๋ ๊ฐ์๋ฅผ ๊ตฌํด์ผ ํ๋ค.
์ป์ ์ ์๋ ์ต๋ ์์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ์ ๋ ฅ ์์ 1์ ์๋ก ์ค๋ช ํด ์ฃผ๊ฒ ๋ค.
5 4
0 1 0 0
0 0 1 0
1 1 0 0
1 0 1 0
1 1 0 0
// init dp array
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
์ฒ์์ 0, 0 ๋ถ๋ถ์ ์ ๋ ฅ๊ฐ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ค.
๊ทธ๋ฌ๋ฉด 2์ฐจ์ array๋ฅผ ๋ชจ๋ 0์ผ๋ก ์ด๊ธฐํํ์ ๋ 0, 0์๋ 0 ๋๋ 1์ด ์ค๊ฒ ๋ ๊ฒ์ด๋ค.
๊ทธ๋ค์ array์ ๊ฐ์ ๋ฃ์ ๋๋ ๋ฃ์ ์์น์ ์ผ์ชฝ ๊ฐ๊ณผ ์์ชฝ ๊ฐ ์ค ๋ ํฐ ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค. ์ด๋์ ์ค๋ฅธ์ชฝ, ์๋์ชฝ์ผ๋ก๋ฐ์ ์ด๋์ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ array์ ์ฒซ ๋ฒ์งธ ์ค์ ๊ตฌํ ๋๋ ์์ชฝ์ ๊ฐ์ ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ ์ผ์ชฝ ๊ฐ์ ์ฌ์ฉํด ์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ ๊ฒ ๋๋ฉด ์ฒซ ์ค์ ์ ๋ ฅ์ 0 1 0 0 ์ด๊ธฐ ๋๋ฌธ์ array์ ์ฒซ ์ค์ ๊ตฌ์ฑ์ ์๋์ ๊ฐ์์ง๋ค.
// array์ ์ฒซ ์ค
0 1 1 1
์ ๋ ฅ์ 2๋ฒ์งธ์ 1์ด ์์ด์ ๊ทธ ์ดํ์ ๊ฐ๋ ๋ชจ๋ 1์ด ๋๋ค.
์ด์ ์ ๊ฐ(์ผ์ชฝ ๊ฐ)์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
2๋ฒ์งธ ์ค๋ถํฐ๋ ์์ ๊ฐ๊ณผ ์ผ์ชฝ์ ๊ฐ์ ๋ชจ๋ ํ์ธํด์ ๋ ํฐ ๊ฐ์ ์ฌ์ฉํด ์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ ๊ฒ ๋๊น์ง ์งํํ๋ฉด ์๋์ ๊ฐ์ dp array๊ฐ ๊ตฌ์ฑ๋๋ค.
// ์ต์ข
array
0 1 1 1
0 1 2 2
1 2 2 2
2 2 3 3
3 4 4 4
๋ฌธ์ ํด๊ฒฐ ์ฝ๋
import java.io.InputStreamReader
import java.io.BufferedReader
import kotlin.math.max
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val (h, w) = readLine().split(" ").map { it.toInt() }
val dp = Array(h) { Array(w) { 0 } }
for (i in 0 until h) {
val mine = readLine().split(" ").map { it.toInt() }
if (i == 0) dp[i][0] = mine[0]
else {
if (mine[0] == 1) dp[i][0] = dp[i-1][0] + 1
else dp[i][0] = dp[i-1][0]
}
for (j in 1 until mine.size) {
if (i == 0) {
if (mine[j] == 1) dp[i][j] = dp[i][j-1] + 1
else dp[i][j] = dp[i][j-1]
} else {
if (mine[j] == 1) dp[i][j] = max(dp[i - 1][j] + 1, dp[i][j - 1] + 1)
else dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])
}
}
}
println(dp.last().last())
}
๋ฌธ์ ํ์ด
์ฒซ ์ค์ ์ ๋ ฅ๋ฐ์ ๋๋ ์ผ์ชฝ ๊ฐ๋ง ์ฌ์ฉํด ์ค๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ ์ค์ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ๋ ์์ ๊ฐ๋ง ์ฌ์ฉํด ์ฃผ๊ณ ๊ทธ ์ด์ธ์ ๊ฒฝ์ฐ๋ ์์ ์ผ์ชฝ ๊ฐ์ ๋ค์ ์ฌ์ฉํด ์ค๋ค.
๊ทธ๋ฌ๋ฉด ์์์ ์ธ๊ธํ๋ค์ํผ dp array๊ฐ ๊ตฌ์ฑ๋๊ฒ ๋๊ณ ๊ทธ ๊ฐ์ ๋ง์ง๋ง ์ค์ ๋ง์ง๋ง ๊ฐ์ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํด๊ฒฐ ๊ณผ์
dp ๋ฌธ์ ์น๊ณ ๋ ์๊ฐํ๋ ๊ฒ ๊ทธ๋ฆฌ ์ด๋ ต์ง๋ ์์๋ค.
2์ฐจ์ dp ๋ฌธ์ ์ ์ํ ๋ง ๋ฒ์ ์ธ ๋ฏํ๋ค.
'๐ฏ | ๋ฐฑ์ค > ๐ | Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin, S5] ๋ฐฑ์ค 11116๋ฒ ๊ตํต๋ (0) | 2024.11.15 |
---|---|
[Kotlin, S2] ๋ฐฑ์ค 2232๋ฒ ์ง๋ขฐ (0) | 2024.10.21 |
[Kotlin, S4] ๋ฐฑ์ค 2358๋ฒ ํํ์ (0) | 2024.09.26 |
[Kotlin, S5] ๋ฐฑ์ค 32344๋ฒ ์ ๋ฌผ ๋ฐ๊ตด (0) | 2024.09.23 |
[Kotlin, S4] ๋ฐฑ์ค 9242๋ฒ ํญํ ํด์ฒด (0) | 2024.09.20 |