작성일 :

문제 링크

28635번 - Индикатор

설명

1부터 m까지 순환하는 표시값에서 a를 b로 만들기 위한 최소 버튼 횟수를 구하는 문제입니다.


접근법

버튼은 항상 1씩 증가하며 순환하므로, 현재 값에서 목표 값까지 앞으로 진행하는 횟수를 계산하면 됩니다.

따라서 목표가 현재 이상이면 단순 차이를, 그렇지 않으면 최댓값까지 갔다가 다시 목표까지 가는 횟수를 구합니다.


Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
using System;

class Program {
  static void Main() {
    var m = int.Parse(Console.ReadLine()!);
    var a = int.Parse(Console.ReadLine()!);
    var b = int.Parse(Console.ReadLine()!);

    var ans = b >= a ? b - a : m - a + b;
    Console.WriteLine(ans);
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int m, a, b; cin >> m >> a >> b;

  int ans = (b >= a) ? (b - a) : (m - a + b);
  cout << ans << "\n";

  return 0;
}