ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
๋ถ๋ฑํธ๊ฐ 2๊ฐ๊ฐ ์ฃผ์ด์ง๋ค๋ฉด ๋ถ๋ฑํธ ์ฌ์ด์ ๋ค์ด๊ฐ ์ ์๋ ์ซ์๋ 3๊ฐ์ด๋ค. ๋ฐ๋ผ์ ์๊ฐ ์ค๋ณต๋์ง ์๊ณ ์์ ์์์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฒฝ์ฐ์ ์๊ฐ ๋๋ฏ๋ก ์ด๋ ์์ด์ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค. ์ด์ ์ N๊ณผ M (1)๊ณผ ๋ค๋ฅธ์ ์ด ์๋ค๋ฉด, ์ ๋ ฅ๋ ๋ถ๋ฑํธ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง์ ๋ํด ํ์ธ ํ ํ์๊ฐ ์๋ค.
์ฝ๋
def available(i, j, op):
if op == '<':
return i < j
return i > j
def dfs(depth):
global answer
if depth == k + 1:
'''
๊ฐ์ฅ ์ฒ์์ ์ฐพ๋ ๊ฐ์ด MIN
๊ฐ์ฅ ๋ง์ง๋ง์ ์ฐพ๋ ๊ฐ์ด MAX
'''
if not answer[MIN]:
answer[MIN] = [*check]
else:
answer[MAX] = [*check]
return
for i in range(10):
if i not in check:
if not depth or available(check[depth - 1], i, op[depth - 1]):
check[depth] = i
dfs(depth + 1)
check[depth] = -1
if __name__ == "__main__":
MIN, MAX = 0, 1
answer = [[] for _ in range(2)]
k = int(input())
op = input().split()
nums = [num for num in range(10)]
check = [-1] * (k + 1)
dfs(0)
for num in answer[MAX]:
print(num, end='')
print()
for num in answer[MIN]:
print(num, end='')
๋ก์ง์ ์ ํํ ์์ฑํ์์์๋ ๋ถ๊ตฌํ๊ณ , ๋ฌธ์ ์์ ์ฑ์ ์คํจ๋ฅผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ์๋ค. 30๋ถ ๋์ ์ฝ๋๋ ๋ณด๊ณ ๋ฐ๋ก๋ค๋ ์ ๋ ฅํด๋ณด์๋๋ฐ, `check`๋ฅผ ํด์ ํ ๋ 0์ธ๋ฑ์ค์ ์๊ฒน์น๊ฒ -1๋ก ์ด๊ธฐํํด์ฃผ์ด์ผ ํ๋๋ฐ 0์ผ๋ก ์ด๊ธฐํํ๋ค๋ณด๋ ์คํจ๊ฐ ๋ฐ์ํ์๋ค.
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 1260 DFS์ BFS (0) | 2020.07.20 |
---|---|
๋ฐฑ์ค: 1248 ๋ง์ถฐ๋ด (0) | 2020.07.19 |
๋ฐฑ์ค: 14889 ์คํํธ์ ๋งํฌ (0) | 2020.07.17 |
๋ฐฑ์ค: 1759 ์ํธ ๋ง๋ค๊ธฐ (0) | 2020.07.17 |
๋ฐฑ์ค: 14501 ํด์ฌ (0) | 2020.07.16 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ