-
[Algo Rhythm๐บ๐]BOJ 14888 - ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐAlgo Rhythm๐บ๐/BOJ 2021. 6. 22. 16:24
๋ฌธ์ ๋ถ์
$N (2 \le N \le 11)$๊ฐ์ ์๋ก ์ด๋ฃจ์ด์ง ์์ด $A_1, A_2, A_3, ..., A_n$์ ์์๋ ๋ฐ๊ฟ ์ ์์ง๋ง ์ซ์ ์ฌ์ด ๋ค์ด๊ฐ๋ ์ฐ์ฐ์๋ค์ ์์๋ ๋ฐ๊ฟ ์ ์๋ค. ๋ฐ๋ผ์ ์ด ๋ฌธ์ ๋ ์ฐ์ฐ์๋ค์ ์์์ ๋ํ '๋ชจ๋ ์กฐํฉ์ ๊ตฌํ ๋ค' ๊ณ์ฐํ ๊ฒฐ๊ณผ๋ค ์ค ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ ๋ก ์ดํดํ ์ ์๋ค.
๋ฌธ์ ํ์ด
1. ์ต์ ํ ๐ โ๏ธ
์ฐ์ฐ์๋ค์ ์์์ ๋ํ ๋ชจ๋ ์กฐํฉ์ ๊ตฌํ๊ธฐ ์ํด backtracking์ ์ฌ์ฉํ๋ค.
์ด๋ ๋ฐฉ๋ฌธํด์ผ ํ๋ vertex๋ค์ ์ฐ์ฐ์๋ค์ธ๋ฐ ์ฐ์ฐ์๋ค์ ์ข ๋ฅ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด enum์ ์ ์ํ๋ค. ๋ํ ์ฐ์ฐ์๋ค์ ๊ฐ์๋ ์ ๋ ฅ์ ๋ฐ๋ผ ๊ฐ๋ณ์ ์ด๊ธฐ ๋๋ฌธ์ ์ ์ํ enum์ ์ ์ฅํ๋ vector๋ฅผ ์ ์ํ๋ค.
backtracking์ ์ฌ์ฉํ ์ ํ์์ ์๋์ ๊ฐ๋ค. ์ด๋ $acc, n\_idx, n, a, ops$๋ ๊ฐ๊ฐ ๋์ ๊ณ์ฐ๊ฐ, ๊ณ์ฐ์ ์ฌ์ฉํ ์์ด์ ์ธ๋ฑ์ค๊ฐ, ์์ด์ ๊ธธ์ด, ์์ด์ ์ ์ฅํ ๋ฐฐ์ด, ์ฐ์ฐ์๋ค์ ์ ์ฅํ vector์ด๋ค.
$f(acc, n\_idx, n)= \begin{cases} get\ max/min & if\ n\_idx == n\\ for(op : ops)\ f(acc\ op\ a[n\_idx], n\_idx, n)& else\ if\ op\ not\ visited\end{cases}$
2. ์ต์ ํ ๐โ๏ธ
์๊ฐํด๋ณด๋ ์์ ์ฌ์ฉํ vector๋ฅผ ๊ตณ์ด ์ฌ์ฉํ ํ์๊ฐ ์์๋ค. ์ด๋ฅผ ์ ์ธํ์ฌ ์ฌ๊ทํจ์๋ก ์ต์ ํํ๋ค.
์ด๋ ์ฌ์ฉํ ์ ํ์์ ์๋์ ๊ฐ๋ค. $acc, n_\_idx, n, a, n\_add, n\_sub, n\_mul, n\_div$๋ ๊ฐ๊ฐ ๋์ ๊ณ์ฐ๊ฐ, ๊ณ์ฐ์ ์ฌ์ฉํ ์์ด์ ์ธ๋ฑ์ค๊ฐ, ์์ด์ ๊ธธ์ด, ์์ด์ ์ ์ฅํ ๋ฐฐ์ด, add ์ฐ์ฐ์์ ๊ฐ์, sub ์ฐ์ฐ์์ ๊ฐ์, mul ์ฐ์ฐ์์ ๊ฐ์, div ์ฐ์ฐ์์ ๊ฐ์๋ฅผ ์๋ฏธ์ด๋ค.
$f(acc, n\_idx,n\_add, n\_sub, n\_mul, n\_div)= \begin{cases} get\ max/min & if\ n\_idx == n\\ f(acc + a[n\_idx], n\_idx + 1, n\_add - 1, n\_sub, n\_mul, n\_div) & else\ if\ n\_add\ != 0\\f(acc + a[n\_idx], n\_idx + 1, n\_add, n\_sub - 1, n\_mul, n\_div) & else\ if\ n\_sub\ != 0\\f(acc + a[n\_idx], n\_idx + 1, n\_add, n\_sub, n\_mul - 1, n\_div) & else\ if\ n\_mul\ != 0\\f(acc + a[n\_idx], n\_idx + 1, n\_add, n\_sub, n\_mul, n\_div - 1) & else\ if\ n\_div\ != 0\\ \end{cases}$
๋ณต์ก๋ ๋ถ์
$n (2 \le n \le 11)$๊ฐ์ ์๊ฐ ์ฃผ์ด์ง ๋, ์๊ฐ ๋ณต์ก๋์ ๊ณต๊ฐ ๋ณต์ก๋๋ ์๋์ ๊ฐ๋ค.
1. ์ต์ ํ ๐ โ๏ธ
- ์๊ฐ ๋ณต์ก๋ : $O(n^2)$
- n - 1๋ฒ์ recursive call์ด ์๊ณ ๊ฐ recursive call๋ง๋ค n - 1๊ฐ์ ์ฐ์ฐ์๋ค์ด ๋ด๊ธด vector๋ฅผ ์ํํ๊ธฐ ๋๋ฌธ์
- ๊ณต๊ฐ ๋ณต์ก๋ : $O(n)$
- n - 1๊ฐ์ ์ฐ์ฐ์๋ฅผ ์ ์ฅํ๋ vector, n๊ฐ์ ์์ด์ ์ ์ฅํ๋ ๋ฐฐ์ด์ด ์๊ธฐ ๋๋ฌธ์
2. ์ต์ ํ ๐โ๏ธ
- ์๊ฐ ๋ณต์ก๋ : $O(n^2)$
- n - 1๋ฒ์ recursive call์ด ์๊ณ i๋ฒ์งธ recursive call๋ง๋ค (n - 1 - i)๋ฒ์ recursive call์ด ์๊ธฐ ๋๋ฌธ์
- ๊ณต๊ฐ ๋ณต์ก๋ : $O(n)$
- n๊ฐ์ ์์ด์ ์ ์ฅํ๋ ๋ฐฐ์ด์ด ์๊ธฐ ๋๋ฌธ์
์ฝ๋
1. ์ต์ ํ ๐ โ๏ธ
2. ์ต์ ํ ๐โ๏ธ
๋ฌธ์ ์ถ์ฒ
https://www.acmicpc.net/problem/14888
14888๋ฒ: ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ
์ฒซ์งธ ์ค์ ์์ ๊ฐ์ N(2 ≤ N ≤ 11)๊ฐ ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ A1, A2, ..., AN์ด ์ฃผ์ด์ง๋ค. (1 ≤ Ai ≤ 100) ์ ์งธ ์ค์๋ ํฉ์ด N-1์ธ 4๊ฐ์ ์ ์๊ฐ ์ฃผ์ด์ง๋๋ฐ, ์ฐจ๋ก๋๋ก ๋ง์ (+)์ ๊ฐ์, ๋บ์ (-)์ ๊ฐ์,
www.acmicpc.net
'Algo Rhythm๐บ๐ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algo Rhythm๐บ๐]BOJ 6588 - ๊ณจ๋๋ฐํ์ ์ถ์ธก (0) 2021.06.23 [Algo Rhythm๐บ๐]BOJ 2309 - ์ผ๊ณฑ ๋์์ด (0) 2021.06.22 [Algo Rhythm๐บ๐]BOJ 20170 - Commemorative Dice (0) 2021.06.21 [Algo Rhythm๐บ๐]BOJ 14889 - ์คํํธ์ ๋งํฌ (0) 2021.06.18 [Algo Rhythm๐บ๐]BOJ 1620 - ์ ์ ํ๋ด2 (0) 2021.03.12 - ์๊ฐ ๋ณต์ก๋ : $O(n^2)$