-
[๋ฐฑ์ค] 1755 ์ซ์๋์ด with PythonPS 2022. 3. 6. 00:49728x90๋ฐ์ํ
๐ BOJ 1755 ์ซ์๋์ด
๐ก ์กฐ๊ฑด
- 79๋ฅผ ์์ด๋ก ์ฝ๋ ์ซ์ ๋จ์๋ก ํ๋์ฉ ์ฝ๋๋ค๋ฉด "seven nine"์ด ๋๋ค. 80์ ๋ง์ฐฌ๊ฐ์ง๋ก "eight zero"๋ผ๊ณ ์ฝ๋๋ค.
- 79๋ 80๋ณด๋ค ์์ง๋ง, ์์ด๋ก ์ซ์ ํ๋์ฉ ์ฝ๋๋ค๋ฉด "eight zero"๊ฐ "seven nine"๋ณด๋ค ์ฌ์ ์์ผ๋ก ๋จผ์ ์จ๋ค.
- ๋ฌธ์ ๋ ์ ์ M, N(1 โค M โค N โค 99)์ด ์ฃผ์ด์ง๋ฉด M ์ด์ N ์ดํ์ ์ ์๋ฅผ ์ซ์ ํ๋์ฉ ์ฝ์์ ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ์ ์์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ ๊ฒ.
- M ์ด์ N ์ดํ์ ์ ์๋ฅผ ๋ฌธ์ ์กฐ๊ฑด์ ๋ง๊ฒ ์ ๋ ฌํ์ฌ ํ ์ค์ 10๊ฐ์ฉ ์ถ๋ ฅํ๋ค.
- ์ ๋ ฌ ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin n = int(stdin.readline()) arr = [] num = 0 i = 1 while n > num: num += (i * (i + 1)) // 2 arr.append(num) i += 1 dp = [int(1e9) for i in range(n + 1)] for i in range(1, n + 1): for num in arr: if num == i: dp[i] = 1 break elif num > i: break dp[i] = min(dp[i], 1 + dp[i - num]) print(dp[n])
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
8 28
์คํ๊ฒฐ๊ณผ
8 9 18 15 14 19 11 17 16 13 12 10 28 25 24 21 27 26 23 22 20
โจ๏ธ ๋ฌธ์ ํ์ด
- dict ํ ๋ณ์ d ์ ๊ฐ ์ซ์๋ง๋ค์ ์์ด ๋ฌธ์์ด์ ์ ์ฅํ๋ค.
- n๋ถํฐ m + 1 ๊น์ง ์ํ(i)ํ๋ฉด์ i๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ์ ๋ ๊ธธ์ด๋งํผ ๋ ์ํ(j)ํ๋ค.
- s ๋ฐฐ์ด์ data[j]๋ฅผ ์์ด ๋ฌธ์์ด๋ก ๋ณํ ํ ๋ฃ์ด์ค๋ค.
- j ์ํ๊ฐ ๋๋๋ฉด s ๋ฆฌ์คํธ์ i๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ ๊ฐ์ ์ถ๊ฐํด์ค๋ค.
- ๊ทธ ํ, temp ๋ฐฐ์ด์ s๋ฅผ ํํ๋ก ๋ง๋ค์ด ์ถ๊ฐํ๋ค.
- temp๋ฅผ ์ ๋ ฌํ๊ณ , ์ ๋ ฌ๋ ์ซ์๊ฐ์ 10๊ฐ์ฉ ์ถ๋ ฅํ๋ค.
๐พ ๋๋์
- ๊ทธ๋ค์ง ์ด๋ ค์ด ๋ฌธ์ ๊ฐ ์๋์๋๋ฐ, ๋ณต์กํ๊ฒ ์๊ฐํด์ ํ๋ค์๋ ๋ฌธ์ ์์ต๋๋ค.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1788 ํผ๋ณด๋์น์์ ํ์ฅ with Python (0) 2022.03.06 [๋ฐฑ์ค] 1660 ์บกํด ์ด๋ค์ with Python (0) 2022.03.06 [๋ฐฑ์ค] 16935 ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 3 with Python (0) 2022.03.04 [๋ฐฑ์ค] 15965 K๋ฒ์งธ ์์ with Python (0) 2022.03.04 [๋ฐฑ์ค] 10384 ํฌ๊ทธ๋จ with Python (0) 2022.03.03