본문 바로가기

개발/알고리즘

[BOJ] 리모콘_1107

처음 접근 방식

이 문제를 처음 접근했을 때는, 입력받은 수를 문자열로 나눠서 여러 경우의 수를 고려해 주려고 했었다.

하지만 그러한 방식을 생각했을 때, 고려해 줘야 할 상황이 너무 많았고 결국 해결할 수 없었다.

 

그래서 여러 블로그들을 찾아 보았고, 이 문제는 브루트 포스라는 방법으로 푸는 문제라고 한다.

브루트 포스는 간단하게 말하자면 그냥 전수 조사와 같은 것이다.

모든 경우를 저언부 다 찾아주는 것이다.

 

풀이 방법

문제를 풀기 위해 생각할 때, 먼저 크게 두 가지를 생각해야 한다.

1. 처음부터 +, -로 계산한 것이 최소일 때.

2. 숫자 버튼으로 이동하여 +,-를 통해 구한 값이 최소일 때.

 

1번은 너무 간단하다. 처음 시작 값이 100번이라고 했으니 num = abs(100 - n)으로 구해주었다.

 

2번은 조금 생각을 해야 한다.

문제의 n 값의 범위는 50만인데, 위 코드를 보면 100만으로 설정이 되어있다.

그 이유는 최악의 경우까지 고려해야 하기 때문이다.

예를 들어, 리모콘이 8과0 빼고 다 고장난 상태라고 하고 n이 50만이라고 한다면 +, -로는 49만9천9백이 되야 한다.

하지만 80만으로 간 다음, +, -로 50만까지 계산한 것이 더 효율적이기 때문에 넉넉하게 0~100만으로 잡은 것이다.

 

이러한 방식으로, 전수조사를 통해  num = abs(100 - n)보다 작은 값이 나오면 그 값으로 교체해주는 방식으로 문제를 해결하였다.

 

 

 

 

 

 

'개발 > 알고리즘' 카테고리의 다른 글

[BOJ] 탈출_3055  (0) 2021.02.21
[BOJ] 구슬 탈출 2_13460  (0) 2021.02.20
이진 탐색(Binary Search)란?  (0) 2021.02.17
[BOJ] 트리의 지름_1167  (0) 2021.02.16
[BOJ] 계단 오르기_2579  (0) 2021.02.03