오답노트
[브루트포스] BOJ 1107 리모컨 본문
문제
https://www.acmicpc.net/problem/1107
1107번: 리모컨
첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼
www.acmicpc.net
풀이
틀린 풀이
어렵게 풀려고 했다. 채널에 가까운 작은 수와 큰 수를 찾았는데 너무 처리해야할 예외가 많았다.
그래서 멘탈이 터져서 포기..
import sys
N = sys.stdin.readline().rstrip()
M = int(sys.stdin.readline())
if M > 0:
btn_list = list(map(int,sys.stdin.readline().split()))
else:
btn_list = []
int_N = int(N)
if int_N == 100:
print(0)
else:
if abs(int_N - 100) < 3:
print(2)
else:
if len(btn_list) == 10:
print(abs(int_N - 100))
elif len(btn_list) == 0:
print(len(N))
else:
min_btn, max_btn = 9,0
for k in range(0,10):
if k in btn_list:
continue
min_btn = min(k,min_btn)
max_btn = max(k,max_btn)
cnt = 0
cnt_1 = 0
cnt_2 = 0
tmp = ''
tmp_1 = ''
tmp_2 = ''
for i in range(len(N)):
n = N[i]
if int(n) in btn_list:
num = -1
pre = 10
# 작은 수 부터
for k in range(10):
if k in btn_list:
continue
if abs(int(n) - k) < pre:
pre = abs(int(n) - k)
num = k
if i != 0 or num != 0 or len(N) == 1:
tmp_1 = tmp
cnt_1 = cnt
tmp_1 += str(num)
cnt_1 += 1
idx = i
while idx < len(N)-1:
idx += 1
tmp_1 += str(max_btn)
cnt_1 += 1
# 큰 수 부터
num = -1
pre = 10
for k in range(9,-1,-1):
if k in btn_list:
continue
if abs(int(n) - k) < pre:
pre = abs(int(n) - k)
num = k
if i != 0 or num != 0 or len(N) == 1:
tmp_2 = tmp
cnt_2 = cnt
tmp_2 += str(num)
cnt_2 += 1
idx = i
while idx < len(N)-1:
idx += 1
tmp_2 += str(min_btn)
cnt_2 += 1
break
else:
tmp += n
cnt += 1
if tmp_1 and tmp_2:
cnt_1 += abs(int_N - int(tmp_1))
cnt_2 += abs(int_N - int(tmp_2))
print(min(cnt_1,cnt_2))
else:
print(cnt_1)
정답
별거 없다 0부터 죄다 뒤져보는거다.
N = int(input())
M = int(input())
brokens = []
if M:
brokens = input().split()
def check(n):
strN = str(n)
for s in strN:
if s in brokens:
return False
return True
res = abs(100-N) # +,- 만 이용해서 채널을 찾을때
for i in range(1000000):
if check(i):
res = min(res, len(str(i))+abs(i-N))
# 망가지지 않은 버튼으로 수를 만들 때 누른 횟수 + 그 수에서 +,-로 채널을 찾을 때
print(res)
'Python > 코딩테스트' 카테고리의 다른 글
[브루트포스] BOJ 18111 마인크래프트 (0) | 2023.05.04 |
---|---|
[DP] BOJ 10942 팰린드롬? (1) | 2023.04.13 |
[DP] BOJ 12865 평범한 배낭 (0) | 2023.04.05 |
[DP] BOJ 9251 LCS (4) | 2023.04.05 |
[Heap] 프로그래머스 - 디스크 컨트롤러 (0) | 2023.04.02 |