ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
์ด๋ชจํฐ์ฝ์ ์ถ๋ ฅํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์ต์ ์๊ฐ์ ์ด์ ์ ๋ค๋ฃฌ 1697 ์จ๋ฐ๊ผญ์ง ๋ฌธ์ ์ ๊ฐ์ด ํธ๋ฆฌ์ ๊ฐ์ง๋ฅผ ๋ปฃ์ด๋๊ฐ๋ฉฐ ์ ๋ต์ ์ฐพ์ ์ ์๋ค. ์ด ๋ฌธ์ ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ณต์ฌ, ๋ถ์ฌ๋ฃ๊ธฐ, ์ญ์ ์ ๊ฐ์ด 3๊ฐ์ง์ ๊ฒฝ์ฐ๋ก ๊ฐ์ง๋ฅผ ๋ปฃ์ด๋๊ฐ๋ฉด ๋๋ค. ๊ฐ์ง๋ฅผ ๋ปฃ์ด๋๊ฐ ๋ ํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค.
- ํ์ฌ ๋ชจ๋ํฐ์ ํ์๋ ์ด๋ชจํฐ์ฝ์ด S๋ณด๋ค ๋ง์ ๊ฒฝ์ฐ ํ์ ์ฝ์ ํ ํ์๊ฐ ์๋ค.
- ๋ชจ๋ํฐ์ ํ์๋ ์ด๋ชจํฐ์ฝ์ด 0๋ณด๋ค ์์ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
- ๊ฐ์ง๋ฅผ ๋ปฃ์ด๋๊ฐ๋ฉฐ ํ์ฌ ํ์๋ ์ด๋ชจํฐ์ฝ์ ๋์ ํ๋ค.
์ฝ๋
from sys import stdin
from collections import deque
def bfs(start):
q = deque([start])
while q:
m, c = q.popleft()
if m == s:
return check[m][c]
for n_m, n_c in \
(m, m), (m + c, c), (m - 1, c):
if 0 <= n_m <= s and not check[n_m][n_c]:
q.append([n_m, n_c])
check[n_m][n_c] = check[m][c] + 1
if __name__ == '__main__':
MAX = 1001
s = int(stdin.readline())
check = [[0] * MAX for _ in range(MAX)]
print(bfs([1, 0]))
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 11725 ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ (0) | 2020.07.27 |
---|---|
๋ฐฑ์ค: 1991 ํธ๋ฆฌ ์ํ (0) | 2020.07.27 |
๋ฐฑ์ค: 13913 ์จ๋ฐ๊ผญ์ง 4 (0) | 2020.07.24 |
๋ฐฑ์ค: 13549 ์จ๋ฐ๊ผญ์ง 3 (0) | 2020.07.24 |
๋ฐฑ์ค: 12851 ์จ๋ฐ๊ผญ์ง 2 (0) | 2020.07.24 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ