ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
์ฑ๋ N์ผ๋ก ์ด๋ํ๊ณ ์ ํ ๋, M๊ฐ์ ๋ฒํผ์ด ๊ณ ์ฅ ๋์ ๊ณ ์ฅ ๋ ๋ฒํผ์ ์ ์ธํ๊ณ +, -๋ฅผ ํ์ฉํ์ฌ ์ํ๋ ์ฑ๋์ ์ ๊ทผํ๊ธฐ ์ํด ์ต์๋ก ๋ฆฌ๋ชจ์ปจ ๋ฒํผ์ ๋๋ฅด๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค. DFS๋ฅผ ํตํด ํ์์ ์งํํ๋๋ผ๋, python3์ recursive depth๋ฅผ ์ด๊ณผํ์ง ์์ผ๋ฏ๋ก DFS๋ก ๋ฌธ์ ๋ฅผ ํ์๋ค.
- ๊ณ ์ฅ ๋๊ณ ์ฅ ๋ ๋ฒํผ์ด ์๋ ๊ฒฝ์ฐ
- ์ฑ๋ 100๋ฒ๋ถํฐ ์์ํ๋ฏ๋ก abs(100 - ์ด๋ํ๊ณ ์ ํ๋ ์ฑ๋)๊ณผ ํด๋น ์ฑ๋์ ์๋ฅผ ๋ฒํผ์ผ๋ก ์ ๋ ฅํ์์ ๋์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํด ์์ ๊ฐ์ ์ถ๋ ฅํ๋ค.
- ๊ณ ์ฅ ๋ ๋ฒํผ์ด ์๋ ๊ฒฝ์ฐ
- ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒํผ์ DFS๋ก ํตํด ํ๋์ฉ ์ถ๊ฐํด๊ฐ๋ฉฐ, depth๋ N์ ๊ธธ์ด๋งํผ ํ์ํ๋ค.
- ๋ง์ฝ ์ฐพ๊ณ ์ ํ๋ ์ฑ๋์ด 1234๋ผ๋ฉด, ์ซ์ ๋ฒํผ์ ์ ๋ ฅํ ๊ฒฝ์ฐ 4์๋ฆฌ ์ด์ ์ ํํ ํ์๋ ์๋ค.
- abs(N - ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒํผ์ ํตํด ์ ๋ ฅํ ์ฑ๋)์ +, -๋ฅผ ๋๋ฌ์ผ ํ๋ ํ์๊ฐ ๋๋ค.
- ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒํผ์ DFS๋ก ํตํด ํ๋์ฉ ์ถ๊ฐํด๊ฐ๋ฉฐ, depth๋ N์ ๊ธธ์ด๋งํผ ํ์ํ๋ค.
์ฝ๋
from sys import stdin def dfs(channel, press_cnt): global answer for button in available: cur_channel = int(channel + button) remainder = abs(n - cur_channel) answer = min(answer, press_cnt + remainder + 1) if press_cnt < channel_length: dfs(str(cur_channel), press_cnt + 1) if __name__ == '__main__': n = int(stdin.readline()) channel_length = len(str(n)) m = int(stdin.readline()) answer = abs(100 - n) if not m: print(min(answer, channel_length)) exit(0) available = {str(num) for num in range(10)} - set(stdin.readline().split()) dfs('', 0) print(answer)
์ฑ์ ์ค, 92%์ 97%์์ ํ๋ ธ๋ค๊ณ ํ์๋ค. M์ด 0์ธ ๊ฒฝ์ฐ, ์ฆ ๊ณ ์ฅ๋ ๋ฒํผ์ด ์๋ ๊ฒฝ์ฐ ๊ฐ๊ณ ์ ํ๋ ์ฑ๋์ ํฌ๊ธฐ (N์ด 1234์ธ ๊ฒฝ์ฐ : 4) ๋งํผ ๋ฐ์ํ์๋๋ค. ์๊ฐํด๋ณด๋, ๋จ์ํ +, -๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ ์ต์์ผ ์ ์๋ค๋ ๊ฒ์ ๋ฐ์ํ์ง ์์ ๋ฐ๋ก๋ฅผ ์ถ๊ฐํ์ง ์์์ ํ๋ ธ์๋ค.๐
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 12886 ๋ ๊ทธ๋ฃน (0) | 2020.08.21 |
---|---|
๋ฐฑ์ค: 1339 ๋จ์ด ์ํ (0) | 2020.08.20 |
๋ฐฑ์ค: 1062 ๊ฐ๋ฅด์นจ (0) | 2020.08.18 |
๋ฐฑ์ค: 7453 ํฉ์ด 0์ธ ๋ค ์ ์ (0) | 2020.08.17 |
๋ฐฑ์ค: 2143 ๋ ๋ฐฐ์ด์ ํฉ (0) | 2020.08.17 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ