[백준 BOJ] 28635번 Индикатор (C++/cpp)
2026. 1. 8. 16:50ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/28635


접근 방법 - 기초적인 사칙연산 문제
백준의 28635번 문제는 기초적인 사칙연산을 활용하여 간단히 해결할 수 있는 문제이다.
해당 문제는, 카운터의 화면에 표시된 숫자(a)에서 특정 숫자(b)까지 만드는 데에 버튼을 눌러야 하는 총횟수를 구하여 출력하면 되는 문제이다.
이때 버튼을 눌렀을 때 화면에 표시되는 숫자는 다음과 같은 규칙에 따라 변동이 된다.
- 카운터의 버튼을 누르면, 수가 1씩 증가한다.
- 특정 숫자(m)를 넘어가면, 화면의 숫자는 1로 돌아간다.
외국어로 작성된 문제 지문에 대한 해석본은 아래 링크에 있으니, 문제 해결할 시 함께 참고하면 좋을 것이다.
https://www.acmicpc.net/board/view/148182
필자는 정답을 구하는 방식을 2가지 경우로 나누었고, 각 경우에 알맞은 로직을 구성하여 이에 따라 코드를 작성하였다.
* 목표하는 숫자(b)가 현재 화면의 숫자(a)보다 크거나 같은 경우
이 경우는, 화면에 표시 가능한 숫자의 최댓값(m)을 거치지 않아도 되기 때문에 비교적 간단하다.
따라서, 버튼을 (b - a)번만 누른다면 목표하는 숫자에 도달할 수 있다고 볼 수 있다.
* 목표하는 숫자(b)가 현재 화면의 숫자(a)보다 작은 경우
이 경우는, 아래의 3가지 절차를 거쳐 b에 도달하게끔 해야 한다.
- a에서 m으로 만드는 데에 버튼을 누르는 횟수 (m - a)
- m에서 1로 만드는 데에 버튼을 누르는 횟수 (1)
- 1에서 b로 만드는 데에 버튼을 누르는 횟수 (b - 1)
위를 모두 더하면 (m-a)+1+(b-1)라는 식이 나오고, 이는 결국 m - a + b라는 식으로 줄일 수 있다.
따라서, 버튼을 (m - a + b)번 누른다면 목표하는 숫자에 도달할 수 있다고 볼 수 있다.
해당 문제에 대한 해설로는 위 설명으로 충분한 것으로 판단되어, 더 구체적인 설명은 생략하고자 한다.
혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면, 아래의 코드를 참고해 보길 바란다.
필자는 아래처럼 코드를 작성하여 문제를 해결하였다.
반응형
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;
//백준 28635번 코드
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int m, a, b;
cin >> m >> a >> b;
if (a <= b) { cout << b - a << endl; }
else { cout << m - a + b << endl; }
}
제출 결과

(2024.09.13 백준 28635번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
| [백준 BOJ] 29986번 Amusement Park Adventure (C++/cpp) (0) | 2026.01.11 |
|---|---|
| [백준 BOJ] 1755번 숫자놀이 (C++/cpp) (0) | 2026.01.09 |
| [백준 BOJ] 31656번 Sticky Keys (C++/cpp) (0) | 2026.01.08 |
| [백준 BOJ] 30664번 Loteria Falha (Python) (0) | 2026.01.08 |
| [백준 BOJ] 2740번 행렬 곱셈 (C++/cpp) (0) | 2026.01.08 |