๋ฌธ์ ์ค๋ช
RGB๊ฑฐ๋ฆฌ์๋ ์ง์ด N๊ฐ ์๋ค. ๊ฑฐ๋ฆฌ๋ ์ ๋ถ์ผ๋ก ๋ํ๋ผ ์ ์๊ณ , 1๋ฒ ์ง๋ถํฐ N๋ฒ ์ง์ด ์์๋๋ก ์๋ค.
์ง์ ๋นจ๊ฐ, ์ด๋ก, ํ๋ ์ค ํ๋์ ์์ผ๋ก ์น ํด์ผ ํ๋ค. ๊ฐ๊ฐ์ ์ง์ ๋นจ๊ฐ, ์ด๋ก, ํ๋์ผ๋ก ์น ํ๋ ๋น์ฉ์ด ์ฃผ์ด์ก์ ๋, ์๋ ๊ท์น์ ๋ง์กฑํ๋ฉด์ ๋ชจ๋ ์ง์ ์น ํ๋ ๋น์ฉ์ ์ต์๊ฐ์ ๊ตฌํด๋ณด์.
- 1๋ฒ ์ง์ ์์ 2๋ฒ ์ง์ ์๊ณผ ๊ฐ์ง ์์์ผ ํ๋ค.
- N๋ฒ ์ง์ ์์ N-1๋ฒ ์ง์ ์๊ณผ ๊ฐ์ง ์์์ผ ํ๋ค.
- i(2 ≤ i ≤ N-1)๋ฒ ์ง์ ์์ i-1๋ฒ, i+1๋ฒ ์ง์ ์๊ณผ ๊ฐ์ง ์์์ผ ํ๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ง์ ์ N(2 ≤ N ≤ 1,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ๊ฐ ์ง์ ๋นจ๊ฐ, ์ด๋ก, ํ๋์ผ๋ก ์น ํ๋ ๋น์ฉ์ด 1๋ฒ ์ง๋ถํฐ ํ ์ค์ ํ๋์ฉ ์ฃผ์ด์ง๋ค. ์ง์ ์น ํ๋ ๋น์ฉ์ 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ชจ๋ ์ง์ ์น ํ๋ ๋น์ฉ์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
์ ์ถ๋ ฅ ์์
์ ๋ ฅ
3
26 40 83
49 60 57
13 89 99
์ถ๋ ฅ
96
๋ด ๋ฌธ์ ํ์ด
let n = Int(readLine()!)!
var red = Array(repeating: 0, count: n)
var green = Array(repeating: 0, count: n)
var blue = Array(repeating: 0, count: n)
for i in 0..<n {
let now = readLine()!.split(separator: " ").map({Int(String($0))!})
if i == 0 {
red[0] = now[0]
green[0] = now[1]
blue[0] = now[2]
}
else {
red[i] = min(green[i-1], blue[i-1]) + now[0]
green[i] = min(red[i-1], blue[i-1]) + now[1]
blue[i] = min(red[i-1], green[i-1]) + now[2]
}
}
print(min(red.last!, green.last!, blue.last!))
๐ DP ๋ฌธ์ ๋ก, ์ง ๋ง๋ค ์ด๋ค ์์ ์น ํ๋ค๋ ์ ์ ๋ฅผ ๋ฐํ์ผ๋ก ์ธ ๊ฐ์ง ๊ฒฝ์ฐ์ ์๋ฅผ ๋ง๋ค์ด์ฃผ๋๊ฒ ํฌ์ธํธ!
์ด ๋ฌธ์ ๋ ์ด์ ์ ํ์๋ #2579 ๊ณ๋จ์ค๋ฅด๊ธฐ ๋ฌธ์ ์ ํก์ฌํ๋ฏ๋ก, ์ฐธ๊ณ !
[ํ์ด ์ค๋ช ]
- 1, 2, 3 ์์ด ์๋ค๊ณ ํ๊ณ , ๊ฐ๊ฐ 1์ ๊ณจ๋์ ๋, 2, ๊ทธ๋ฆฌ๊ณ 3์ ๊ณจ๋๋ค๊ณ ๊ฐ์ ํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ
๋ฉ๋ชจ์ด์ ์ด์ ์ผ๋ก ๊ธฐ๋กํ์ฌ ๋ง์ง๋ง์ ๊ทธ ์ค ์ต์๊ฐ์ ์ถ๋ ฅํด์ฃผ์ด์ผํ๋ค. - ๋ํ๋ก 1, ๋นจ๊ฐ์์ ๊ณจ๋๋ค๊ณ ํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ฐ์ ธ๋ณด์.
์ด๋ค ์ง์ ๋นจ๊ฐ์์ผ๋ก ์น ํ๋ค๋ ๊ฒ์ ๋ฐ๋ก ์ด์ ์ง์ ์ด๋ก์ด๋ ํ๋์ ๊ณจ๋๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
๋ฐ๋ผ์ 1์ ๊ณ ๋ฅด๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ธฐ๋กํ๋ red ๋ฐฐ์ด์,
green ๋ฐฐ์ด๊ณผ blue ๋ฐฐ์ด์ ์ด์ ์์น ์ค ๋ ์์ ์๋ฅผ ๊ณจ๋ผ์ ๋ํ์ฌ ์ ์ฅํด์ฃผ๋ฉด ๋๋ค. - ๋นจ๊ฐ์๋ฟ๋ง ์๋๋ผ ์ด๋ก, ํ๋์ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ ์ํ๊ณผ ๊ฐ์ด ๋ฐ๋ณตํ๋ฉด ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ธ๋ก, ์ฒซ ๋ฒ์งธ ์ง์ ์ด์ ์ง๊ณผ ๋น๊ตํ ์ ์์ผ๋ฏ๋ก, ํน๋ณํ ์ฐ์ฐ ์์ด
๋ฐ๋ก red, green, blue ๋ฐฐ์ด์ ๋ชจ๋ ํด๋น ์๊น ๊ฐ์ ์ ์ฅํด์ฃผ๋ฉด ๋๋ค.
[์ฝ๋ ์ค๋ช ]
- ๊ฐ๊ฐ red, blue, ๊ทธ๋ฆฌ๊ณ green์ ๊ณจ๋๋ค๊ณ ํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ด์ ๋ฐฐ์ด์ ์์ฑํ๋ค.
- for ๋ฐ๋ณต์ผ๋ก ์ง ๋ง๋ค์ ์๊น ๊ฐ๊ฒฉ์ ๋ฐ์์ค๋ฉด์ ๋ฐ๋ก๋ฐ๋ก ์ฐ์ฐ์ ์งํํ๋ค.
- i๊ฐ 0์ผ ๊ฒฝ์ฐ, ์ฒซ ๋ฒ์งธ ์ง์ ์๋ฏธํ๋ฏ๋ก ์ด ๋๋ ๊ฐ ๋ฐฐ์ด์ ํด๋น ๊ฐ๊ฒฉ์ ๊ทธ๋๋ก ๋ฃ์ด์ฃผ์๋ค.
- ๊ทธ ์ธ์ ๊ฒฝ์ฐ์๋ ๊ฐ ์๊น๋ณ๋ก ์์์ ์ค๋ช ํ ํ์ด์๊ฐ์ ์ฐ์ฐ์ ์คํํ๋ค.
๐ก ํผ๋๋ฐฑ
- ๋ฐ๋ก ์ ์ ํ์๋ ๋ฌธ์ ์ ์ ๋ง ์ ์ฌํด์ ๊ธ๋ฐฉ ํ ์ ์์๊ณ ,
์ด๋ฌํ ์ ํ์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ๊ณต๋ถํ ์ ์์๋ค.
๋น์ทํ ๋ฌธ์ ๋ค์ ๋ ๋ง์ด ํ์ด๋ณด๋ฉด ์ต์ํด์ง ์ ์์ ๊ฒ ๊ฐ๋ค.
๋ฌธ์
'3๏ธโฃ Swift > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift Algorithm] ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 4 BOJ #11659 (2) | 2021.10.20 |
---|---|
[Swift Algorithm] 2รn ํ์ผ๋ง BOJ #11726 (0) | 2021.10.20 |
[Swift Algorithm] ๊ณ๋จ ์ค๋ฅด๊ธฐ BOJ #2579 (0) | 2021.10.19 |
[Swift Algorithm] 1, 2, 3 ๋ํ๊ธฐ BOJ #9095 (0) | 2021.10.19 |
[Swift Algorithm] 1๋ก ๋ง๋ค๊ธฐBOJ #1463 (0) | 2021.10.19 |
๋๊ธ