๋ถ๋ฑํธ
๋ฌธ์
- ์ ๋ ฅ : ๋ถ๋ฑํธ ๋ฌธ์์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์ ์ k( 2 ≤ k ≤ 9)์ k๊ฐ์ ๋ถ๋ฑํธ ๊ธฐํธ
- ์ถ๋ ฅ : ์ ์๋ ๋ถ๋ฑํธ ๊ด๊ณ๋ฅผ ๋ง์กฑํ๋ k+1 ์๋ฆฌ์ ์ต๋, ์ต์ ์ ์
๋ถ๋ฑํธ์ ๊ฐฏ์์ ๋ถ๋ฑํธ๊ฐ ์ฃผ์ด์ก์ ๋, ๊ทธ ๋ถ๋ฑํธ์ ๋ง๊ฒ ์ ์์ผ๋ก ๋ค์ด๊ฐ ์ ์๋ ์ซ์(0~9)๊ฐ ์กด์ฌํ๋ค.(๋จ, ๋ชจ๋ ์ซ์๋ ๋ฌ๋ผ์ผ ํ๋ค.)
์ฃผ์ด์ง ๋ชจ๋ ๋ถ๋ฑํธ๋ฅผ ๋ง์กฑํ๋ ์ซ์๋ค์ ์ฐพ๊ณ , ๋ถ๋ฑํธ๋ฅผ ์ ๊ฑฐํ๋ฉด ์ ์ํ๋๊ฐ ๋์ค๋๋ฐ, ๊ทธ๋ค ์ค ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ๋ฐํํด์ผํ๋ค.
์ ๋ ฅ
2
< >
์ถ๋ ฅ
897
021
์ฉ์ด ์ ๋ฆฌ - ๋ฐฑํธ๋ํน
- ๋ชจ๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์ ์ค์์ ํน์ ํ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ๋ง ์ดํด๋ณด๋ ๊ฒ
- ๋ต์ด ๋ ๋งํ์ง ํ๋จํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ํ์์ ์ค๋จ
- ์ฃผ๋ก ๋ฌธ์ ํ์ด์์๋ DFS ๋ฑ์ผ๋ก ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ํ๋ ๊ณผ์ ์์, ์กฐ๊ฑด๋ฌธ์ผ๋ก ๋ต์ด ์ ๋๋ก ๋ ์ ์๋ ์ํฉ์ ์ ์ํ๊ณ , ๊ทธ๋ฌํ ์ํฉ์ผ ๊ฒฝ์ฐ์๋ ํ์์ ์ค์ง์ํจ ๋ค ๊ทธ ์ด์ ์ผ๋ก ๋์๊ฐ์ ๋ค์ ๋ค๋ฅธ ๊ฒฝ์ฐ๋ฅผ ํ์ํ๋๋ก ๊ตฌํ
ํ์ด ์ ๋ต
- ์ฌ๊ท ํจ์๋ฅผ ์ด์ฉํ์ฌ ๋ธ๋ฃจํธ ํฌ์ค(๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ชจ๋ ํ์ํ๋ฉด์ ์๊ตฌ์กฐ๊ฑด์ ์ถฉ์กฑ๋๋ ๊ฒฐ๊ณผ๋ง์ ๊ฐ์ ธ์ค๋ ๋ฐฉ์)๋ก ๊ตฌํ
- ์ฌ๊ท ํจ์๋ฅผ ํธ์ถํ๊ธฐ ์ ์ ๋ถ๋ฑํธ ์ฒดํฌ๋ฅผ ํ๋ ๋ฐฉ์์ผ๋ก ๋ฐฑํธ๋ํน์ ํ์ฌ ์๊ฐ์ ๋จ์ถ
- ํ๋์ ์์ฑ๋ ์ ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด์ ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๊ธธ์ด(N)+1 ๋งํผ ์ฌ๊ท ํจ์๋ฅผ ํธ์ถํด์ผ ํ๋ค. (์ซ์ ๊ฐ์ = ๋ถ๋ฑํธ ๊ฐ์+1)
์ฌ๊ท ํจ์ ์ข ๋ฃ ์กฐ๊ฑด : ์ซ์ ๊ฐ์(๊ธธ์ด) == N+1 - ์๋ฅผ ์ค๋ณตํ์ฌ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก, check ๋ฐฐ์ด์ ๋ณ๋๋ก ๋ง๋ค์ด์ ์ฌ์ฉ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ํ์ธํด์ผ ํ๋ค.
- ์ฌ๊ท ํจ์๋ฅผ ํธ์ถํ๊ธฐ ์ ์, ๋ค์ ์ซ์๊ฐ ๋ถ๋ฑ์์ ๋ง๋์ง ์ดํด๋ด์ผ ํ๋ค.
ex) ์ฃผ์ด์ง ๋ถ๋ฑํธ๊ฐ < > > ๋ผ๋ฉด, 0 < 3 > 2 > 1์ ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง 3 < 2 > 1 > 0์ ๋ถ๊ฐ๋ฅํ๋ค. ์ด๋ฐ ๊ฒฝ์ฐ, 3 < 2๋ถํฐ ํ๋ฆฐ ๋ถ๋ฑ์์ด๋ฏ๋ก, ์ด ๋ค๋ก๋ ์ฌ๊ทํจ์๋ฅผ ํธ์ถํ ํ์๊ฐ ์๋ค. - ์ฌ๊ท ํจ์ ํธ์ถ์ 0๋ถํฐ 9๊น์ง ์์๋๋ก ๋ถ๋ฅด๋ฏ๋ก, ์ ๋ต์ ์ต์๊ฐ์ ์ฒ์ ํธ์ถ๋ ๊ฐ์ด๋ฉฐ, ์ต๋๊ฐ์ ๋ง์ง๋ง์ ํธ์ถ๋ ๊ฐ์ด๋ค.
Solutions
solution | time | info |
---|---|---|
[solution1.py] | 224ms | - |
n = int(input()) # ๋ถ๋ฑํธ ๊ฐ์
sign = input().split() #๋ถ๋ฑํธ
check = [False]*10 # 0~9
mx, mn = "", ""
# ๋ถ๋ฑํธ๊ฐ ์ฑ๋ฆฝํ๋ ์ง ํ์ธํ๋ ํจ์
def possible(i,j,k):
if k == '<':
return i<j
if k == '>':
return i>j
return True
def solve(cnt, z):
global mx, mn
if cnt == n+1:
if not len(mn): # mn์ด ๋น์์ ธ ์์ผ๋ฉด ์ต์๊ฐ์ z ๋ฃ๊ธฐ
mn = z
else: # mn์ ๊ฐ์ด ์์ผ๋ฉด ์ต๋๊ฐ์ ๋ฃ๊ธฐ
mx = z
return
for i in range(10):# 0๋ถํฐ 9๊น์ง
if not check[i]: # check[i]์ด false์ด๋ฉด(์ค๋ณต ๋ฐฉ์ง)
if cnt==0 or possible(z[-1], str(i), sign[cnt-1]):
check[i]=True
solve(cnt+1, z+str(i)) #์ฌ๊ทํจ์
# ๋ง์ฝ 0 > ? ์ผ ๊ฒฝ์ฐ ?์ ์ฌ ์ซ์๊ฐ ์์ผ๋ฏ๋ก solveํจ์๊ฐ ๋๋๊ณ check[0]์ด false๊ฐ ๋๊ณ check[1]๋ถํฐ ๋ค์ ์์ํ๋ค.
check[i]=False
solve(0, "") #solve ํจ์ ๋๋ฆฌ๊ธฐ
print(mx)
print(mn)
Reference
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] #18352 ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ (Python) (0) | 2022.01.18 |
---|---|
[๋ฐฑ์ค] #15922 ์์ฐ์ผ ์ฐ์์ผ์ด์ผ!! (Python) (0) | 2021.05.18 |
[๋ฐฑ์ค] #14501 ํด์ฌ (Python) (0) | 2021.05.18 |
[๋ฐฑ์ค] #1764 ๋ฃ๋ณด์ก (Python) (0) | 2021.03.15 |
[๋ฐฑ์ค] #15970 ํ์ดํ ๊ทธ๋ฆฌ๊ธฐ (Python) (0) | 2021.03.05 |