๋ฐ์ํ
ํ๋ก๊ทธ๋๋จธ์ค LV.1 ๋ชจ์
์ฝ๋ผ์ธ ์ถ์ธก
๋ฌธ์ ์ค๋ช
1937๋ Collatz๋ ์ฌ๋์ ์ํด ์ ๊ธฐ๋ ์ด ์ถ์ธก์, ์ฃผ์ด์ง ์๊ฐ 1์ด ๋ ๋๊น์ง ๋ค์ ์์ ์ ๋ฐ๋ณตํ๋ฉด, ๋ชจ๋ ์๋ฅผ 1๋ก ๋ง๋ค ์ ์๋ค๋ ์ถ์ธก์ ๋๋ค. ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1-1. ์ ๋ ฅ๋ ์๊ฐ ์ง์๋ผ๋ฉด 2๋ก ๋๋๋๋ค.
1-2. ์ ๋ ฅ๋ ์๊ฐ ํ์๋ผ๋ฉด 3์ ๊ณฑํ๊ณ 1์ ๋ํฉ๋๋ค.
2. ๊ฒฐ๊ณผ๋ก ๋์จ ์์ ๊ฐ์ ์์ ์ 1์ด ๋ ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฃผ์ด์ง ์๊ฐ 6์ด๋ผ๋ฉด 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 ์ด ๋์ด ์ด 8๋ฒ ๋ง์ 1์ด ๋ฉ๋๋ค. ์ ์์ ์ ๋ช ๋ฒ์ด๋ ๋ฐ๋ณตํด์ผ ํ๋์ง ๋ฐํํ๋ ํจ์, solution์ ์์ฑํด ์ฃผ์ธ์. ๋จ, ์ฃผ์ด์ง ์๊ฐ 1์ธ ๊ฒฝ์ฐ์๋ 0์, ์์ ์ 500๋ฒ ๋ฐ๋ณตํ ๋๊น์ง 1์ด ๋์ง ์๋๋ค๋ฉด –1์ ๋ฐํํด ์ฃผ์ธ์.
์ ํ ์ฌํญ
- ์ ๋ ฅ๋ ์, num์ 1 ์ด์ 8,000,000 ๋ฏธ๋ง์ธ ์ ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
n | result |
6 | 8 |
16 | 4 |
626331 | -1 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ๋ฌธ์ ์ ์ค๋ช ๊ณผ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
- 16 → 8 → 4 → 2 → 1 ์ด ๋์ด ์ด 4๋ฒ ๋ง์ 1์ด ๋ฉ๋๋ค.
์ ์ถ๋ ฅ ์ #3
- 626331์ 500๋ฒ์ ์๋ํด๋ 1์ด ๋์ง ๋ชปํ๋ฏ๋ก -1์ ๋ฆฌํดํด์ผ ํฉ๋๋ค.
์ ์ถ
func solution(_ num:Int) -> Int {
var n = num, cnt = 0
while n != 1 && cnt < 500{
n = n%2 == 0 ? n/2 : (n*3+1)
cnt += 1
}
return cnt >= 500 ? -1 : cnt
}
๋ฐ์ํ
'โจ๏ธ Language > swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค LV.1] ํ์ค๋ ์ (0) | 2023.02.14 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค LV.1] ํ๊ท ๊ตฌํ๊ธฐ (0) | 2023.02.14 |
[ํ๋ก๊ทธ๋๋จธ์ค LV.1] ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์ (0) | 2023.02.11 |
[ํ๋ก๊ทธ๋๋จธ์ค LV.1] ์ง์์ ํ์ (0) | 2023.02.11 |
[ํ๋ก๊ทธ๋๋จธ์ค LV.1] ์ ์ผ ์์ ์ ์ ๊ฑฐํ๊ธฐ (0) | 2023.02.11 |