์ค๋๋ง์ ํฌ์คํ ํ๋ค์ฉ,
์ด๋ฐ์ ๋ฐ ์ฑ์ฉ์ค๋น๋๋ฌธ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ชปํ์๋๊ฒ๋ ์ฌ์ค์ด์ง๋ง, ๊ทธ๋์ ํผ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ค์ ๋๋ถ๋ถ ํ์ด์ฌ์ผ๋ก ํ๊ธฐ๋ ํ์๊ณ ๊นํ๋ธ์๋ง ๋จ๊ธฐ๊ณ ... ์ด๋ฐ์ ๋ฐ ์ด์ ๋ก ํด์ ... ์ ๋ก๋ ํ์ง ์์์๋ค์! ํํํํํ ๋ค์ ํ์ดํ .. ! ๐
โซ๏ธ ๋ฌธ์
https://www.acmicpc.net/problem/1697
โซ๏ธ ๋์ ํ์ด (๋๋ฒ์งธ ํธ๋ ๊ฒ์ด๊ธด ํจ!)
๋ฌธ์ ๋ฅผ ๋ณด์๋ง์ ์๊ฐ๋ BFSํ์ด๋ฐฉ์์ด๋ค. ๊ทธ๋ฆฌ๊ณ , ๋ฌธ์ ๋ฅผ ์ฐจ๊ทผ์ฐจ๊ทผ ์๊ฐํด๋ณด๋ฉด์, "์ด ์ด๊ฑฐ dp๋ก๋ ํ ์ ์๊ฒ ๋๋ฐ?" ํ๋ ์๊ฐ์ด ๋์์ ๋ค์๊ณ , ํ์ด๋ฅผ ์ฐพ์๋ณด๋๊น dp๋ก ํผ ์ฌ๋๋ ์กด์ฌํ๋ค. ๊ทธ๋์, ๋๊ฐ์ง ๋ชจ๋ ํ์ด๋ฅผ ํด๋ณด๊ธฐ๋ก ๊ฒฐ์ !
์ค๋ ฅ์ด ๋์ง ์๋ ๊ฒ ๊ฐ์์ ์์ํ๋๋ฐ, ์์ ์๋ ์ค๋ฒ1๋ ๋ฒ ์ฐผ์ง๋ง ์์ฆ์๋ ๊ทธ๋๋ ์ค๋ฒ1์ ์์ ๊ฐ์ ๊ฐ์ง๊ณ ์์ ํ์ด๋๊ฐ๋ค. ๊ณจ๋ 3๊น์ง ํ ์ ์์์ ๋๋ก ๋ ธ๋ ฅํด๋ณด์!
1๏ธโฃ ์ฒซ๋ฒ์งธ ํ์ด, BFS๋ก ํ๊ธฐ
bfs๋ ์ธ์ ํ ๋ ธ๋๋ฅผ ํ์ ์ฝ์ ํ๋ฉด์ ์ต๋จ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ์ ์๋ค. ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ฆฐ๊ฒ์ฒ๋ผ, ๋ฐฑ์ค์ ์ฒซ๋ฒ์งธ ์๋น์ด์ ์์น์ธ 5๋ถํฐ ์์ํ๊ฒ ๋๋ฉด, ๊ทธ ์ธ์ ํ ๋ ธ๋๋ค์ 5์์ ๊ฐ ์ ์๋ ์์น๋ค์ด ํด๋นํ ๊ฒ์ด๋ค. ์ฐจ๊ทผ์ฐจ๊ทผ ํ์ดํ๋ฅผ ๊ทธ๋ฆฌ๋ฉด์ ์๋น์ด์ ์์น๋ฅผ ํ์ ๋ฃ์ด์ฃผ๋ ๊ฒ์ ์์ํ๋ค. ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๊ทธ๋ฆฌ์ง ์์์ง๋ง, ๊ฒฐ๊ตญ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋์์ ์์น์ธ 17์ ๋๋ฌํ ๋, bfs๋ฅผ ํ์ถํ๊ฒ ํด์ฃผ๊ณ , ๊ทธ๋์ depth๋ฅผ ์ถ๋ ฅํ๋ฉด ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๋ ๊ฒ์ด๋ค. ๊ทธ๊ฒ ๋ฐ๋ก 5 -> 10 -> 9 -> 18 -> 17 ํด์ 4๊ฐ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๋ ๊ฒ์ด๋ค.
์ด๊ฒ์ ๊ทธ๋๋ก bfs๋ก ๊ตฌํํ๋ 1์ฐจ์๋,, ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค.
func bfs() {
let nk = readLine()!.split(separator: " ").map{ Int($0)! }
var queue = [(nk[0], 0)] // ์๋น์ด์ ์ฒซ ์์น๊ฐ ์์์ , depth ๋ 0
while !queue.isEmpty {
let temp = queue.removeFirst()
let place = temp.0
let depth = temp.1
if place == nk[1] { // k์์น๋ฉด?
print("\(depth)")
break
}
if place - 1 >= 0 {
queue.append((place - 1, depth + 1))
}
queue.append((place + 1, depth + 1))
queue.append((place * 2, depth + 1))
}
}
bfs()
์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๋ค. ์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ์๊น? ์๊ฐํ๋ค. while๋ฌธ์ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์, queue์ ๊ธธ์ด์ ๋ค๋ผ ์๊ฐ๋ณต์ก๋๋ ๋ฌ๋ผ์ง๋ค. ๊ทธ๋์ ํ์ ๊ธธ์ด์ธ N์ด ์๊ฐ๋ณต์ก๋๊ฐ ๋์ด O(N)์ด ๋๋ค. ํ์ง๋ง,,, ๋ด๊ฐ ์ฌ๊ธฐ์ removeFirst()๋ฅผ ์ฌ์ฉํ๋ค. removeFirst()์ ์๊ฐ๋ณต์ก๋๋ O(N),, ๊ทธ๋ฌ๋ฏ๋ก ์ต์ข ์ ์ผ๋ก O(N^2)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๊ฒ๋๋ค.
(๊ทธ๋ ๋ค. ์ฐ๋ฆฌ๋ Swift๋ก bfs๋ฅผ ๊ตฌํํ ๋, ์์ฃผ ์ข์ ์ฑ๋ฅ์ ํ (ํ์ด์ฌ์ deque๊ฐ ์๋ค๋ฉด, ์ธ๋ฑ์ค๋ก ์ ๊ทผํด์ผํ๋ค๊ณ ์์ ์ธ๊ธํ ์ ์๋ค. https://didu-story.tistory.com/422)
์ฐ๋ฆฌ๋ N๊ณผ K์ ์ต๋๊ฐ์ 10๋ง์ด๊ณ , ๊ฐ 10๋ง๊ฐ์ ์ ๋ค์ด 3๊ฐ์ฉ์ ์ธ์ ๋ ธ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด ๋ชจ๋ ๋ ธ๋๊ฐ ํ์ ๋ค์ด๊ฐ๋ค์น๋ฉด... ๊ทธ๋ฆฌ๊ณ ๊ฑฐ๊ธฐ์ ๋ O(N)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ removeFirst()๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด, ๋น์ฐ์ค๋ฝ๊ฒ ์๊ฐ์ด๊ณผ๊ฐ ๋ ๊ฒ์ด๋ค. removeFirst()๋ฅผ ์์ ๊ณ , ์๊ฐ๋ณต์ก๋ O(1)์ ๊ฐ๋, index๋ก ์ ๊ทผํ๋ ๋ฐฉ์์ผ๋ก ์๊ฐ๋ณต์ก๋๋ฅผ ์ค์ฌ์ฃผ์ด์ผํ๋ค.
๊ทธ๋ ๊ฒ ์์ฑํ 2์ฐจ์๋,,,, ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋๋ค ใ ใ ใ ใ ใ ใ
func bfs() {
let nk = readLine()!.split(separator: " ").map{ Int($0)! }
var queue = [(nk[0], 0)] // ์๋น์ด์ ์ฒซ ์์น๊ฐ ์์์ , depth ๋ 0
var idx = 0
while idx <= queue.count {
let temp = queue[idx]
let place = temp.0
let depth = temp.1
if place == nk[1] { // k์์น๋ฉด?
print("\(depth)")
break
}
if place - 1 >= 0 {
queue.append((place - 1, depth + 1))
}
queue.append((place + 1, depth + 1))
queue.append((place * 2, depth + 1))
idx += 1
}
}
bfs()
ใ ใ ใ ใ ์์ค ๋ฉ๋ชจ๋ฆฌ์ด๊ณผ... queue์ ์ฝ์ ๋๋ ์์ด๋ค์ด ๋๋ฌด ๊ธธ์ด์ ธ์ ๊ทธ๋ฐ๊ฐ? ๋ง๊ทธ๋๋ก 10๋ง๊ฐ์ ์์ด๋ค์๊ฒ 3๊ฐ์ฉ์ ์ธ์ ๋ ธ๋๊ฐ ์์ ํ ๋๊น... ๊ทธ๋์ queue๋ฅผ ์ถ๋ ฅํด๋ณด๊ธฐ๋ก ํ๋ค.
(์๋น์ ์์น, depth) ์ด๋ ๊ฒ ๊ตฌ์ฑ๋จ.. ์ฌ๊ธฐ ๋นจ๊ฐ์ค ์น๊ฒ๋ง ๋ณด๋ฉด, 13์ ๋ฒ์จ ์ธ๋ฒ์ด๋ ๋ฐฉ๋ฌธํ๋ค. ์ฌ์ง์ด ์ด๊ฒ์ ํ๋ฅผ ๋ชจ๋ ์ฝ์ ํ์ง ์๊ณ , ์ค๊ฐ์ ์๋ฌด๊ฑฐ๋ ์บก์ณํ๊ฑด๋ฐ ๋ฒ์จ ์ธ๊ฐ๋ ๋ณด์ธ๋ค. ์ธ๊ฐ๋ณด๋ค ๋ ๋ง์ด ๋ค์ด์์ ๊ฒ์ด๋ค.
์ฐ๋ฆฌ๋ '์ต๋จ๊ฑฐ๋ฆฌ'๋ฅผ ์ฐพ์์ผํ๋ค. ์๋น์ด๊ฐ 13์์น์ ๋๋ฌํ๋ ์ต๋จ๊ฑฐ๋ฆฌ๋, ๋ฌด์กฐ๊ฑด 3์ด๋ค. ๊ทธ ์ด์์ด ๋์ด๋ ํ์ ๋ฃ์ด์ค ํ์๊ฐ ์๋ค. ์ฐ๋ฆฌ๋ ์ต๋จ๊ฑฐ๋ฆฌ๋ง ๊ตฌํด์ฃผ๋ฉด ๋๋๊น... ๊ทธ๋๊น ์ง๊ธ ํ์ ๋๋ฌด ์ธ๋ฐ์๋ ๊ฒ๋ค์ด ๋ง์ด ๋ค์ด์๊ณ , ์๋ค๋ค์ ํ๋์ฉ ์ ๋ถ ์ ๊ทผํ๋ฉด์ ๋ฉ๋ชจ๋ฆฌ์ด๊ณผ๊ฐ ๋๋๊ฒ ์๋๊น? ์๊ฐํด๋ณธ๋ค. ๊ทธ๋ผ ์ด ๋ชจ๋ ๊ฒ๋ค์ visited๋ผ๋ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ ๋ฐฐ์ด์ ํ๋ ๋ง๋ค์ด์ ํ์ ๋ฃ์ด์ฃผ์ง ์๋ ์์ ์ ํด๋ณด์.
โ BFS๋ก ํผ ์ ๋ต์ฝ๋
์์์ ์ธ๊ธํ๋๋ก, ์ค๋ณต์ ์ค์ฌ์ฃผ๋ visited ๋ฐฐ์ด์ ํ๋ ๋ ๋ง๋ค์ด์ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋๊น, ํต๊ณผํ ์ ์์๋ค.
import Foundation
func bfs() {
let nk = readLine()!.split(separator: " ").map{ Int($0)! }
var queue = [(nk[0], 0)] // ์๋น์ด์ ์ฒซ ์์น๊ฐ ์์์ , depth ๋ 0
var visited = Array(repeating: false, count: 100001)
visited[nk[0]] = true
var idx = 0
while idx <= queue.count {
let temp = queue[idx]
let place = temp.0
let depth = temp.1
if place == nk[1] { // k์์น๋ฉด?
print("\(depth)")
break
}
for i in 0..<3 {
var nextPlace = 0
switch i {
case 0:
nextPlace = place - 1
case 1:
nextPlace = place + 1
default:
nextPlace = place * 2
}
if nextPlace >= 0, nextPlace <= 100000, !visited[nextPlace] {
visited[nextPlace] = true
queue.append((nextPlace, depth + 1))
}
}
idx += 1
}
}
bfs()
2๏ธโฃ ๋๋ฒ์งธ ํ์ด, DP๋ก ํ๊ธฐ
๋ญ๊ฐ, dp๋ก ํ ์ ์์ ๊ฒ ๊ฐ์๋ค. ์์์ ๋งํ๋ฏ, ์๋น์ด๊ฐ ๊ฐ ์ ์๋ place (์์น)์ ๋๋ฌํ ์ ์๋ '์ต๋จ๊ฑฐ๋ฆฌ'๋ง ๊ตฌํ๋ฉด ๋๋ค. ์๋น์ด๋ 5๋ถํฐ ์์ํ์ผ๋ฏ๋ก, dp[5]์๋ 5๊น์ง ๊ฐ ์ ์๋ ์ต๋จ๊ฑฐ๋ฆฌ 0์ ์ผ๋จ ๋ฃ์ด์ค๋ค. ์ฌ๊ธฐ์๋ถํฐ ์๊ฐํด๋ณด์.
1. 2*x์ผ๊ฒฝ์ฐ๋ dp[์ง์]์ผ ๊ฒฝ์ฐ์ด๋ค. ์ฆ, dp ๋ด๋ถ์์๋ ์ง์์ผ๊ฒฝ์ฐ์ ํ์์ผ๊ฒฝ์ฐ ๋๊ฐ์ง๋ก ๋๋ ์ ์๊ฐ์ด ๊ฐ๋ฅํ๋ค.
2. ์ด๋ํ๋ ค๊ณ ํ๋ i๊ฐ ์ง์์ผ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์. ๋ง์ฝ 5์์ 12๊น์ง ์ด๋ํ๋ค๋ฉด? dp[i]๊น์ง ๊ฐ๋ ๋ฐฉ์์ ์๋ ์ฐ๋์๊ณผ ํ๋์ ๋๊ฐ์ง ๋ฐฉ์์ผ๋ก ๊ฐ ์ ์๋ค. 11์์ ์ค๊ฑฐ๋, 6์์์ค๊ฑฐ๋!! ๋์คํ๋๊ฐ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๋ ์ ์๋ค. ํ์ฌ๋ ๊ฑฐ๋ฆฌ๊ฐ ์งง์ผ๋ฏ๋ก, ๋ฌด์กฐ๊ฑด ์ง์์์ ์ค๋๊ฒ ์ต๋จ๊ฑฐ๋ฆฌ ์๋์ผ? ์ถ์ ์ ์๊ฒ ์ง๋ง, ์ฐ๋ฆฌ๋ ๋ฒ์ 10๋ง์ ๋ค๋ฃฐ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ๋๊ฐ์ง ๊ฒฝ์ฐ์ค ์์ ๊ฒ์ ๋ฃ์ด์ฃผ์.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ i ๊ฐ ์ง์์ผ ๊ฒฝ์ฐ์, dp[i] = dp[i/2] + 1 ์ด๊ฑฐ๋ ํ ์นธ ์ (11)์์ ์จ ๊ฒฝ์ฐ๊ฐ ์ต์์ผ ์๋ ์์ผ๋ ๋๊ฐ๋ฅผ ๋น๊ตํด์ ๋ฃ์ด์ฃผ์.
3. i๊ฐ ํ์์ผ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์. ์๋ ๊ทธ๋ฆผ์์๋ ์ธ๊ฐ์ ์ ์ ๊ทธ๋ ค๋์์ง๋ง, ์ด์ฐ๋๋ ์์ฝํด๋ณด๋ฉด 13๊น์ง ์ค๋ ๊ฒฝ์ฐ์ ์๋ 12์์ ์ค๊ฑฐ๋, 14์์ ์ค๊ฑฐ๋ ๋์ค ํ๋์ด๋ค. ํ์ง๋ง 12์ 14๋ ๋ชจ๋ ์ง์์ด๊ธฐ์, 12/2 ๋, 14/2์์ ์จ ๊ฐ๋ค๋ก ์ฑ์์ ธ ์์ ๊ฒ์ด๋ค. ๊ทธ๋ผ ๊ทธ๊ฒ๋ค์์ +1 ํด์ค ๊ฐ์ด ํ์๊น์ง ์ค๋ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๋๋ค.
๊ทธ๋ฆผ์๋ ์ฐ์ฌ์ ธ ์์ง๋ง, ์ฃผ์ํ ์ ์ด ์๋ค. dp๋ ์์์๋ถํฐ ์ฑ์๋๊ฐ๋๊น, dp[13]์ ์ฑ์ธ ๋, dp[14]๋ ์กด์ฌํ์ง ์๋๋ค. (์๋๋ฉด ์ฒ์ ์ด๊ธฐํ๋ temp๊ฐ ์๋ฌด๊ฑฐ๋๋ก ์ฑ์์ ธ์์ ๊ฒ์ด๋ค.) ์ด๊ฒ์ผ๋ก ๊ฐ์ ๊ฐฑ์ ํด์ค ์ ์์ผ๋, dp[14]์ ์ค๊ฒ ๋ ๊ฐ dp[7]์ ๊ฐ์์ +1 ํด์ค ๊ฐ์ ๋ฃ์ด์ค๋ค.
4. ๊ทธ๋ฆฌ๊ณ ์ฃผ์ด์ง ์๋น์ด์ ์์น๋ณด๋ค ์์์๋ ์ ๋ค์ ์ ๋ถ -1์ฉ ๋ฃ์ด์ค๋ค. ์์๋ก๋ณด๋ฉด 5๋ถํฐ ์์์ด๊ณ , dp[4]๋ 5-4์ธ 1์ด ๋ค์ด๊ฐ ๊ฒ์ด๊ณ , dp[3]์ 2, dp[2]๋ 3... ์ด๋ ๊ฒ ๋ค์ด๊ฐ ๊ฒ์ด๋ค. (์์ผ๋ก ๊ฐ๋ ๋ฐฉ๋ฒ์ ํ์นธ์ฉ ์์ง์ด๋ ๋ฐฉ๋ฒ๋ฐ์ ์๊ธฐ ๋๋ฌธ!
๊ทธ๋ ๋ค๋ฉด, dp๋ฅผ ๋จผ์ ์ฑ์์ฃผ๊ณ ์์ํด์ผ๊ฒ ์ง?
์ด ๋ชจ๋ ๊ฒ๋ค์ ๊ตฌํํ๊ณ ์ฝ๋๋ฅผ ๋๋ ธ๋๋ฐ, 1์ฐจ์๊ธฐ ์ ๋ถ ํ๋ ธ๋ค.
import Foundation
func dp() -> Int {
let nk = readLine()!.split(separator: " ").map{ Int($0)! }
var dp = Array(repeating: 100001, count: 100001) // ์ต๋๊ฐ์๋ฌด๊ฑฐ๋๋ก ์ฑ์์ค
if nk[0] >= nk[1] {
return nk[0] - nk[1]
}
for i in 0..<nk[0] {
dp[i] = nk[0] - i
}
for i in nk[0]+1...nk[1] {
if i % 2 == 0 {
// ์ง์์ด๋ฉด
dp[i] = min(dp[i/2] + 1, dp[i-1] + 1)
} else {
// ํ์์ด๋ฉด
dp[i] = min(dp[i-1] + 1, dp[(i+1)/2] + 2)
}
}
return dp[nk[1]]
}
print(dp())
์ง์ง ๋ญ๊ฐ ํ๋ฆฐ๊ฑฐ์ผ ใ ใ ใ ใ ใ ใ ใ
๊ณ ๋ฏผ๊ณ ๋ฏผํ๋ค๊ฐ ์ ์ฌํ ๋ฒ์๋ฅผ ์ดํ๋ค. ์ง๊ธ.... n๊ณผ k๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํด์ฃผ์ง ์์๋ค. ๊ฐ์๊ฒฝ์ฐ์๋ dp์ 0์ ๋ฃ์ด์ฃผ์ด์ผํ๋ค. ์ด๊ฑฐ์ฐพ๋๋ฐ๋ง ๋ช๋ถ์ด ๊ฑธ๋ฆฐ๊ฑฐ์ผ ใ ใ ใ
โ ๊ทธ๋์ ๋ง์ถ ์ต์ข ์ฝ๋!
import Foundation
func dp() -> Int {
let nk = readLine()!.split(separator: " ").map{ Int($0)! }
var dp = Array(repeating: 100001, count: 100001) // ์ต๋๊ฐ์๋ฌด๊ฑฐ๋๋ก ์ฑ์์ค
if nk[0] >= nk[1] {
return nk[0] - nk[1]
}
for i in 0..<nk[0] {
dp[i] = nk[0] - i
}
dp[nk[0]] = 0
for i in nk[0]+1...nk[1] {
if i % 2 == 0 {
// ์ง์์ด๋ฉด
dp[i] = min(dp[i/2] + 1, dp[i-1] + 1)
} else {
// ํ์์ด๋ฉด
dp[i] = min(dp[i-1] + 1, dp[(i+1)/2] + 2)
}
}
return dp[nk[1]]
}
print(dp())
์์ค .. ๋๋์ด ๋ง์๋ค.
์ฌ์ํ ๋ฒ์์ค์, ๊ทธ๋ฆฌ๊ณ 'n๊ณผ k๊ฐ ๊ฐ์๊ฒฝ์ฐ', ๊ทธ๋ฆฌ๊ณ 'n์ด k๋ณด๋ค ํด ๊ฒฝ์ฐ'๋ฅผ ์ฒ๋ฆฌํด์ฃผ์ง ์์์ ํ์ด๋ฐฉ๋ฒ์ ์ ๋ถ ๋ค ์๊ฐํด๋์์ง๋ง,,,,, ์ด๋ฐ๊ฒ๋ค๋๋ฌธ์ ์ค๋๊ฑธ๋ ธ๋ค ใ ใ ํ.... ์ด๋ฐ ์์ค์๋ฅผ ์ค์ด๊ธฐ ์ํด์ ๋ ธ๋ ฅํด์ผ๊ฒ ๋ค.... ๊ฒฐ๊ตญ dp๋ ๊ทธ๋์ ๋ญ ๋์ณค๋์ง ์ฐพ์๋ณด๊ธฐ ์ํด์ ๋ค๋ฅธ ํ์ด๋ฅผ ์ฐธ๊ณ ํ๋ค ใ ใ ใ ใ ใ ์ ์ง์ง!! ์ ๋ฐ ์์ค์ํ์ง๋ง๊ณ ์ ์ ๋๋ฐ๋ก ์ฐจ๋ฆฌ๊ณ ํด์ผ๊ฒ๋ค!
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] (Swift) 2457๋ฒ - ๊ณต์ฃผ๋์ ์ ์ (๊ทธ๋ฆฌ๋, ๊ณจ๋3) (1) | 2023.05.15 |
---|---|
[๋ฐฑ์ค] (Swift) 11501๋ฒ - ์ฃผ์ (์ค๋ฒ2, ๊ทธ๋ฆฌ๋) (0) | 2023.04.25 |
[๋ฐฑ์ค] (Python) 2293๋ฒ - ๋์ 1 (๊ณจ๋5, dp) (0) | 2023.04.01 |
[๋ฐฑ์ค] (Python) 11055๋ฒ - ๊ฐ์ฅ ํฐ ์ฆ๊ฐํ๋ ์์ด (dp ํ์ด ๋ฐฉ๋ฒ) (0) | 2023.04.01 |
[๋ฐฑ์ค] (Swift) 2579๋ฒ - ๊ณ๋จ ์ค๋ฅด๊ธฐ (์ค๋ฒ3, DP) (0) | 2023.03.30 |