[백준, 파이썬] 리모컨, Brute Force

YuJangHoon·2022년 3월 7일
0
post-thumbnail

💡 문제 해결 아이디어

✨ 수정한 아이디어

  • 최대한 가까운 숫자를 누르고 +-로 해결 vs +-로 해결 중 적은 횟수를 출력
  1. answer = abs(100 - n), +-로 해결할 때 누르는 횟수
  2. 10개 숫자 리스트에서 고장난 버튼 remove
  3. for i in 0부터 100000까지
    • i를 구성하는 숫자들이 숫자 리스트에 전부 있다면
      • answer = min(기존 정답, 자릿수 + (+- 횟수))
  4. print(answer)

🛠 피드백

- 왜 안되는지는 모르겠지만, N을 기준으로 위나 아래로 가면서 찾는 것은 틀린다.
- 그냥 무식하게 풀자!

💻 작성된 코드

N = int(input())

ls = [str(i) for i in range(10)]
M = int(input())
# 고장난 버튼이 존재할 때에만
if M:
    broken = list(input().split())
    for b in broken:
        ls.remove(b)
# 멀쩡한 버튼의 집합
ls = set(ls)

# +-로만 해결할 경우의 누르는 횟수
answer = abs(100 - N)
for i in range(1000001):
	# 고장난 버튼이 있는지 확인하고,
    for n in str(i):
        if n not in ls:
            break
    # 만약 없으면, 기존 답과 (자릿수 + +-버튼횟수) 중에서 작은 것으로 갱신
    else:
        answer = min(answer, len(str(i)) + abs(i - N))
print(answer)
profile
HYU DataScience, ML Engineer - 산업기능요원(4급)

0개의 댓글