본문 바로가기

Algorithm/Brute Force

(C++) - 백준(BOJ) 3135 : 라디오

반응형

https://www.acmicpc.net/problem/3135

 

3135번: 라디오

첫 줄엔 정수 A와 B가 주어진다 (1 ≤ A, B < 1000, A ≠ B). 다음 줄엔 정수 N이 주어진다 (1 ≤ N ≤ 5). 다음 N개의 줄엔 미리 지정되어 있는 주파수가 주어진다 (주파수는 1000 보다 작다).

www.acmicpc.net

brute force로 푼 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

시작 주파수 a, 목표 주파수 b, 즐겨찾기 button개수 n, 정답 minMove를 선언한 후 적절히 입력받습니다.

📔 풀이과정

목표 주파수에 도달할 수 있는 방법은 무조건 존재합니다.

정답은 두 가지 중 최소입니다.

1. a -> b로 주파수를 1씩 증가 또는 감소시켜 도달

2. a -> 즐겨찾기 button중 하나눌러 특정 주파수 도달 -> b 로 도달

1.의 경우는 a-b번이 정답이 됩니다.

2.의 경우는 button - b + 1이 2번에 해당하는 방법을 사용했을 때 누른 최소 button 수입니다. 

 

n만큼 for loop를 돌며 즐겨찾기 button정보를 입력받습니다.

이 중 2번을 수행해 최소값을 minMove에 저장해줍니다.

 

📔 정답출력

for loop가 끝난 후, 1번을 수행한 값과 minMove의 값중 최소를 비교해 출력해줍니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int a, b, n, minMove = 0x3f3f3f3f;
int main(){
    cin >> a >> b >> n;
    for(int i = 0, button; i < n; i++) {
        cin >> button;
        minMove = min(minMove, abs(button - b) + 1);
    }
    cout << min(minMove, abs(a-b));
}