[BOJ] 1107: 리모컨

이슬비·2023년 2월 2일
0

Algorithm

목록 보기
67/110
post-thumbnail

브루트포스 푸는 중 ... 골드 문제 풀기 전에 실버 문제들이 익숙해지면 올라오도록 해야겠다 ㅠㅠ...

1. 다른 풀이

import sys
input = sys.stdin.readline

n = int(input())
m = int(input())
remote = {str(x) for x in range(10)}

if m != 0:
    remote -= set(input().split())

min_cnt = abs(100-n)

for k in range(1000001):
    num = str(k)
    print(num)
    for i in range(len(num)):
        if num[i] not in remote:
            break
        if i == len(num)-1:
            min_cnt = min(min_cnt, abs(n-k)+len(num))

print(min_cnt)

이것도 결국 다른 분의 풀이를 봤다. 일단 내가 본 부르트포스의 특징은

  • 진짜 그냥 다 돌면 됨
  • 정말 다 돌기만 하면 됨
  • 대신 똑똑하게 한 번에 돌 수 있게 해야 함

여기서 알게 된 부분도 있는데, 어떤 집합에서 무언가를 제거해주고 싶을 때는

remote = {str(x) for x in range(10)}

if m != 0:
    remote -= set(input().split())

이렇게 set을 먼저 만들어주고 그 후에 다른 set을 받아서 빼주기만 하면 된다는 점!

이건 정말 유용했다.

2. 마치며

자만 NO! 차근차근 ~~~

profile
정말 알아?

0개의 댓글