728x90
📌문제 출처
솔브닷 3++ 클래스 단계
https://www.acmicpc.net/problem/1107
❓ 문제
📗 풀이 코드
'''
고장난 버튼을 제외한 나머지 버튼을 통해 최대한 가까운 채널을 만들어야한다.
0번부터 1,000,000까지 모든 채널을 확인하며 그것이 최대한 가까운 채널인지를 확인해야한다.
0에서부터 채널을 올리는 것이 최대 500,000번이므로 내리는 것 또한 1,000,000번부터 확인한다.
버튼을 누르지 않고 채널 변경만 누르는 경우에 대비해서 최소값을 비교한다.
'''
input = open(0).readline
def solution(dst,n,nums):
min_mov = abs(dst-100) # 채널 변경만 누르는 경우
for i in range(1000001): # 0부터 1000000까지의 숫자를 반복
for j in str(i): # 문자열 숫자 중 한자리 수씩 꺼내서
if int(j) in nums : # 못 쓰는 버튼 중 하나라면 넘어가기
break
else : # 아무것도 안들어있다면 현재까지 최솟값과 현재 이동횟수 중 최솟값으로 초기화
min_mov = min(len(str(i))+abs(dst-i),min_mov)
return min_mov
if __name__ == '__main__':
dst = int(input())
n = int(input())
nums = list(map(int,input().split()))
print(solution(dst,n,nums))
'파이썬 문제풀이' 카테고리의 다른 글
[백준 파이썬] 2579 계단오르기 (0) | 2023.10.13 |
---|---|
[백준 파이썬] 1389 케빈 베이컨의 6단계 법칙 (0) | 2023.10.12 |
[백준 파이썬] 18870 좌표 압축 (0) | 2023.10.12 |
[백준 파이썬] 17299 오등큰수 (0) | 2023.10.12 |
[코드트리 삼성기출] 조삼모사 (0) | 2023.10.06 |