ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
A, B์ ์ซ์๊ฐ ์ฃผ์ด์ง ๋ A์ ์๋ฆฟ์๋ก ๊ตฌํ ์ ์๋ ์์ด์ ๊ตฌํ์ฌ B๋ณด๋ค ์์ผ๋ฉด์ ๊ฐ์ฅ ํฐ ๊ฐ์ ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค. `DFS`๋ฅผ ํตํด ์์ด์ ๊ตฌํ๋ฉด์, B๋ณด๋ค ์์์ง ํ์ธํ๊ณ ์ต๋ ๊ฐ์ ๊ฐฑ์ ํด ์ฃผ๋ฉด ๋๋ค. ์ค๊ฐ์ ๊ฐ์ง์น๊ธฐ๋ฅผ ํด์ฃผ๊ณ ์ถ์ด์, ์์ด์ ์ฒ์ ๊ฐ์ด B์ ์ฒซ ๋ฒ์งธ ๊ฐ๋ณด๋ค ํฌ๋ค๋ฉด ๊ฐ์ง๋ฅผ ๋ป์ง ์๊ฒ ํ๋ ค๊ณ ํ๋๋ฐ... 74~75% ์ ๋์์ `ํ๋ ธ์ต๋๋ค.` ๋ฅผ ์ถ๋ ฅํ๋ค. ๊ฐ์ง์น์ง๋ฅผ ํ์ง ์์ผ๋ ์ ๋ต์ ๋ง์ถ ์ ์์๋ค.
์ฝ๋
from sys import stdin
def dfs(idx, cur_num):
global answer
if idx == length:
if int(cur_num) <= int(''.join(map(str, b))):
answer = max(answer, int(cur_num))
return
for i in range(length):
if idx == 0 and a[i] == 0:
continue
if not check[i]:
check[i] = True
dfs(idx + 1, cur_num + str(a[i]))
check[i] = False
if __name__ == '__main__':
answer = -1
a, b = stdin.readline().split()
a = list(map(int, a.strip()))
b = list(map(int, b.strip()))
length = len(a)
check = [False] * length
dfs(0, '')
print(answer)
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 16236 ์๊ธฐ ์์ด (0) | 2020.10.12 |
---|---|
๋ฐฑ์ค: 17089 ์ธ ์น๊ตฌ (0) | 2020.10.10 |
๋ฐฑ์ค: 2133 ํ์ผ ์ฑ์ฐ๊ธฐ (0) | 2020.10.09 |
๋ฐฑ์ค: 2579 ๊ณ๋จ ์ค๋ฅด๊ธฐ (0) | 2020.10.06 |
๋ฐฑ์ค: 16637 ๊ดํธ ์ถ๊ฐํ๊ธฐ (4) | 2020.10.06 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ