๋ฌธ์ ์ค๋ช
N์ฅ์ ์นด๋๊ฐ ์๋ค. ๊ฐ๊ฐ์ ์นด๋๋ ์ฐจ๋ก๋ก 1๋ถํฐ N๊น์ง์ ๋ฒํธ๊ฐ ๋ถ์ด ์์ผ๋ฉฐ, 1๋ฒ ์นด๋๊ฐ ์ ์ผ ์์, N๋ฒ ์นด๋๊ฐ ์ ์ผ ์๋์ธ ์ํ๋ก ์์๋๋ก ์นด๋๊ฐ ๋์ฌ ์๋ค.
์ด์ ๋ค์๊ณผ ๊ฐ์ ๋์์ ์นด๋๊ฐ ํ ์ฅ ๋จ์ ๋๊น์ง ๋ฐ๋ณตํ๊ฒ ๋๋ค. ์ฐ์ , ์ ์ผ ์์ ์๋ ์นด๋๋ฅผ ๋ฐ๋ฅ์ ๋ฒ๋ฆฐ๋ค. ๊ทธ ๋ค์, ์ ์ผ ์์ ์๋ ์นด๋๋ฅผ ์ ์ผ ์๋์ ์๋ ์นด๋ ๋ฐ์ผ๋ก ์ฎ๊ธด๋ค.
์๋ฅผ ๋ค์ด N=4์ธ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด ๋ณด์. ์นด๋๋ ์ ์ผ ์์์๋ถํฐ 1234 ์ ์์๋ก ๋์ฌ์๋ค. 1์ ๋ฒ๋ฆฌ๋ฉด 234๊ฐ ๋จ๋๋ค. ์ฌ๊ธฐ์ 2๋ฅผ ์ ์ผ ์๋๋ก ์ฎ๊ธฐ๋ฉด 342๊ฐ ๋๋ค. 3์ ๋ฒ๋ฆฌ๋ฉด 42๊ฐ ๋๊ณ , 4๋ฅผ ๋ฐ์ผ๋ก ์ฎ๊ธฐ๋ฉด 24๊ฐ ๋๋ค. ๋ง์ง๋ง์ผ๋ก 2๋ฅผ ๋ฒ๋ฆฌ๊ณ ๋๋ฉด, ๋จ๋ ์นด๋๋ 4๊ฐ ๋๋ค.
N์ด ์ฃผ์ด์ก์ ๋, ์ ์ผ ๋ง์ง๋ง์ ๋จ๊ฒ ๋๋ ์นด๋๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ N(1 ≤ N ≤ 500,000)์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋จ๊ฒ ๋๋ ์นด๋์ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ค.
์ ์ถ๋ ฅ ์์
์ ๋ ฅ
6
์ถ๋ ฅ
4
๋ด ๋ฌธ์ ํ์ด
import Foundation
let N = Int(readLine()!)!
var queue = Array(1...N)
var tmp = 0
if N == 1 { print(1) }
else {
while true {
queue[tmp] = 0
queue.append(queue[tmp + 1])
queue[tmp + 1] = 0
if queue[queue.count - 2] == 0 { print(queue.last!); break }
tmp += 2
}
}
์ด ๋ฌธ์ ๋ ํ๋ฅผ ์ด์ฉํ์ฌ ํ์ดํ๋ค.
- queue๋ผ๋ ์ด๋ฆ์ ๋ฐฐ์ด์ ์์ฑํ๊ณ , 1๋ถํฐ ์ ๋ ฅ๋ ์ซ์ N๊น์ง ๋ด์๋ค.
- ํฌ์ธํฐ์ฒ๋ผ ์ฌ์ฉํ๊ธฐ ์ํ tmp ๋ณ์๋ฅผ ์์ฑํด์ฃผ์๊ณ , ๋ฐฐ์ด์ ์ฒ์๋ถํฐ ์งํ์ ์ํด 0์ ์ ์ฅํ๋ค.
- ์ฐ์ , 1์ด ์ ๋ ฅ๋ ๊ฒฝ์ฐ์๋ ์ญ์ ํ ๊ฒ ์์ด ๋ฐ๋ก 1์ด ๋ต์ผ ์ ๋ฐ์ ์๊ธฐ์ ์์ธ๋ก ๋นผ์ฃผ์๋ค.
- ๊ทธ ์ธ์๋ while๋ก queue ํ์์ ๋ฐ๋ณต์์ผ์ฃผ์๋๋ฐ,
๋จผ์ queue[tmp] = 0 ์ ํตํด ์๋ฅผ ์ง์ฐ๊ณ 0์ผ๋ก ๋์ฒดํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ง์ด ์ ๋ฐ๋ก ๋ท ์ซ์๋ฅผ queue์ appendํด์ฃผ๊ณ , ์ง์ด ์ซ์ ์๋ฆฌ๋ 0์ผ๋ก ๋์ฒดํ๋ค.
์ค์ ๋ก ๋ฐฐ์ด ์๋ฆฌ๋ฅผ ์ญ์ ํ์ง ์๊ณ 0์ผ๋ก ๋์ฒดํด์ค ํ, ํ์ํ ์๋ ๋ค์ ์ถ๊ฐํด์ค์ผ๋ก์จ
๋ฐฐ์ด์ ํ ์นธ์ฉ ์์ผ๋ก ๋น๊ธฐ๋ ๋นํจ์จ์ ์ธ ์คํ์ ๋ฐฐ์ ํ๋ค. - ๋ฐ๋ณต๋ง๋ค queue ๋ฐฐ์ด์ ๋ง์ง๋ง์์ ๋ ๋ฒ์งธ ์๋ฆฌ๊ฐ 0์ธ์ง๋ฅผ ๊ฒ์ฌํ๋ค.
๋ง์ง๋ง์์ ๋ ๋ฒ์งธ ์๋ฆฌ๊ฐ 0์ด๋ผ๋ฉด, ๋งจ ๋ง์ง๋ง ์๊ฐ ๋ต์ด ๋๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ถ๋ ฅ ํ break ํ๋ค. - ์์ if๋ฌธ์ ๊ฑธ๋ฆฌ์ง ์์ ๊ฒฝ์ฐ์๋ tmp์ 2๋ฅผ ๋ํด์ ๋ฐ๋ณต์ ๊ณ์ํ๋ค.
(๋ ์ซ์์ฉ ์ง์๋๊ฐ๊ธฐ ๋๋ฌธ์ 2๋ฅผ ๋ํ๋ค.)
๐ก ํผ๋๋ฐฑ
- stack ๋ฌธ์ ๋ค๊ณผ ๋น์ทํ๋ฐ, ๋ฐฐ์ด์ ๋งจ ์๊ณผ ๋งจ ๋ค๋ฅผ ํจ๊ป ๊ฒ์ฌํ๋ฉฐ ์งํํ๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์๋ค.
- ํ์ง๋ง ์ ํ ํ๋ ์ํ ํ๋ , ๋ฐฐ์ด์ ์์ด๋ ์ค๊ฐ์ฆ์์ ์ญ์ ํ๋ ์ฝ๋๋ฅผ ํผํด์ผ ํ๋ค๋ ์ ์์๋ ๊ฑฐ์ ๊ฐ๋ค.
- ํ๋ FIFO ๊ตฌ์กฐ์ด์ง๋ง, FIFO์ ๋จ์ ์ ๊ทน๋ณตํ๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ ๋ฅ๋ ฅ์ด ํ์ํ๋ค.
๋ฌธ์
'3๏ธโฃ Swift > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift Algorithm] ํ์์ค ๋ฐฐ์ BOJ #1931 (0) | 2021.08.18 |
---|---|
[Swift Algorithm] ๋์ 0 BOJ #11047 (0) | 2021.08.13 |
[Swift Algorithm] ์คํฐ์ BOJ #17298 (0) | 2021.08.08 |
[Swift Algorithm] ๊ท ํ์กํ ์ธ์ BOJ #4949 (0) | 2021.08.07 |
[Swift Algorithm] ๊ดํธ BOJ #9012 (0) | 2021.08.07 |
๋๊ธ