문제 출처 : www.acmicpc.net/problem/1107
문제 해석 : 고장 리모컨을 가지고 최소 횟수로 원하는 채널로 이동하는 문제이다. 즉 가능한 모든 경우를 계산해서 가장 적게 버튼을 누를 수 있도록 설계해야한다.
문제 풀이 : 이 문제는 가능한 모든 경우를 고려해서 문제를 풀어야 하기 때문에 브루트포스 문제이다.
1. 만들 수 있는 모든 버튼을 만들면서 불가능한 경우를 체크한다.
2. 가능한 경우의 몇번 버튼을 눌러야하는지 계산한다.
3. 최솟값을 기록하며 가장 작은 횟수를 출력한다.
가능한 다른 풀이 : for 문을 이용해도 되지만 itertools에 있는 product를 이용해서 모든 경우를 만들고 시작해도 된다. 하지만 좀 더 복잡하고 오래 걸리기 때문에 for 문을 돌려서 풀이를 진행하는 것이 합리적으로 보인다.
풀이 코드
import sys
input = sys.stdin.readline
def possible_num(x):
x = list(str(x))
for element in x:
if element in err:
return False
return True
N = int(input())
M = int(input())
err = list(input().strip())
answer = abs(N - 100)
for temp in range(1000001):
if possible_num(temp) is True:
answer = min(answer, len(str(temp)) + abs(N-temp))
print(answer)
author : donghak park
contact : donghark03@naver.com
## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.
'📊알고리즘, 문제풀이 > 📈문제풀이 (PS)' 카테고리의 다른 글
[알고리즘][Python] 백준 1389 케빈 베이컨의 6단계 법칙 문제 풀이 (0) | 2021.01.08 |
---|---|
[알고리즘][Python] 백준 1260 DFS와 BFS 문제 풀이 (0) | 2021.01.08 |
[알고리즘][Python] 백준 15686 치킨 배달 문제 풀이 (0) | 2021.01.07 |
[알고리즘][Python] 백준 3190 뱀 문제 풀이 (0) | 2021.01.07 |
[알고리즘][Python] 백준 18406 럭키 스트레이트 문제 풀이 (0) | 2021.01.02 |