๋ฌธ์
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ก๊ฐํ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฒ์ง์ด ์๋ค. ๊ทธ๋ฆผ์์ ๋ณด๋ ๋ฐ์ ๊ฐ์ด ์ค์์ ๋ฐฉ 1๋ถํฐ ์์ํด์ ์ด์ํ๋ ๋ฐฉ์ ๋์๊ฐ๋ฉด์ 1์ฉ ์ฆ๊ฐํ๋ ๋ฒํธ๋ฅผ ์ฃผ์๋ก ๋งค๊ธธ ์ ์๋ค. ์ซ์ N์ด ์ฃผ์ด์ก์ ๋, ๋ฒ์ง์ ์ค์ 1์์ N๋ฒ ๋ฐฉ๊น์ง ์ต์ ๊ฐ์์ ๋ฐฉ์ ์ง๋์ ๊ฐ ๋ ๋ช ๊ฐ์ ๋ฐฉ์ ์ง๋๊ฐ๋์ง(์์๊ณผ ๋์ ํฌํจํ์ฌ)๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์๋ฅผ ๋ค๋ฉด, 13๊น์ง๋ 3๊ฐ, 58๊น์ง๋ 5๊ฐ๋ฅผ ์ง๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N(1 ≤ N ≤ 1,000,000,000)์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๋ฐฉ๊น์ง ์ต์ ๊ฐ์์ ๋ฐฉ์ ์ง๋์ ๊ฐ ๋ ๋ช ๊ฐ์ ๋ฐฉ์ ์ง๋๋์ง ์ถ๋ ฅํ๋ค.
์ ๋ต
n = int(input())
res = 1
room = 1
while True:
if n == 1:
print('1')
break
if res >= n and (res - (6 * room)) + 1 <= n:
print(room)
break
else:
res += 6 * room
room += 1
์ ๋ฒ์ง ๊ทธ๋ฆผ์ ๋ฐ๋ฅด๋ฉด
1 -> 1๋ฒ๋ฐฉ /1
2 ~ 7 -> 2๋ฒ๋ฐฉ /6
8 ~ 19 -> 3๋ฒ๋ฐฉ /12
20 ~ 37 -> 4๋ฒ๋ฐฉ /18
38 ~ 61 -> 5๋ฒ๋ฐฉ / 24
์ด๋ฐ์์ผ๋ก ๋ฐฉ์ ๊ฑฐ์ณ์ผํ๋ ๋ฒํธ๋ค์ด 6์๋ฐฐ์๋ก ์ฆ๊ฐํ๋๊ฑธ ๋ณผ ์ ์๋ค.
๋ง์ฝ n=1์ด๋ผ๋ฉด 1์ ์ถ๋ ฅํด์ค๋ค.
๋ง์ฝ n์ด 1์ด ์๋ ๊ฒฝ์ฐ์๋ res๊ฐ n๋ณด๋ค ์๊ณ , (res - 6*room) + 1์ด ์ฑ๋ฆฝ ๋ ๊ฒฝ์ฐ์ room(๋ฐฉ ๋ฒํธ)๋ฅผ ์ถ๋ ฅํด์ค๋ค.
์ฑ๋ฆฝ์ด ๋์ง ์๋๋ค๋ฉด res์ 6*room์ ๋ํด์ฃผ๊ณ , room์ 1 ์ฆ๊ฐ์์ผ์ค๋ค.
์ฌ๊ธฐ์ res๋ 7, 19, 37, 61์ฒ๋ผ ๋ฐฉ์ ๋ง์ง๋ง ์ซ์์ด๋ค.
์๋ฅผ ๋ค์ด n = 21์ผ ๊ฒฝ์ฐ,
n์ 37๋ณด๋ค ์๊ณ , (37 - 6*3) +1 ๋ณด๋ค ํฌ๊ธฐ ๋๋ฌธ์ 4๊ฐ ์ถ๋ ฅ์ด ๋๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] 10828 - ์คํ (0) | 2020.12.29 |
---|---|
[Python] 2750 - ์ ์ ๋ ฌํ๊ธฐ (0) | 2020.12.24 |
[Python] ๋ฐฑ์ค 1541 - ์์ด๋ฒ๋ฆฐ ๊ดํธ (0) | 2020.11.09 |
[Python] ๋ฐฑ์ค 1918 - ํ์ ํ๊ธฐ์ (0) | 2020.11.02 |
[Python] ๋ฐฑ์ค 2960 - ์๋ผํ ์คํ ๋ค์ค์ ์ฒด (0) | 2020.10.27 |