본문 바로가기
PS/solved.ac

[CLASS 3]백준 1107번 - 리모컨

by DawIT 2021. 2. 16.
320x100

1107번 : 리모컨

 

음...  조건을 통해 채널입력으로 갈 수 있는 가장 가까운 수를 얻어내는 방식으로 풀려고 했는데, 생각보다 너무 고려할 것이 많고 복잡해서 그냥 포기하고(..) 브루트 포스로 풀었다. 자존심 상해... 브루트 포스로 풀면 잘~ 풀린다.

 

내 코드:

# dawitblog.tistory.com
# 브루트포스
ch,m = int(input()),int(input())
count = abs(100-ch)
if m:
    l = input().split()
    # 고장난 버튼 빼고 누를 수 있는 버튼
    available = [str(k) for k in range(10) if str(k) not in l]

    if available:
        for num in range(1000001):
            num = str(num)
            for i in range(len(num)):
                if num[i] not in available:
                    break
                elif i == len(num) - 1:
                    count = min(count,len(num) + abs(ch-int(num)))
    print(count)
else:
    print(len(str(ch)) if len(str(ch)) < count else count)

 

다만 주의할 점은, 고장난 버튼의 개수가 0일 경우 입력이 한 줄 줄어들기 때문에 그것을 고려해 주어야 한다. 안그러면 EOF 에러가 반겨줄 것이다.

댓글