[백준 BOJ] 25625번 샤틀버스 (C++/cpp)

2023. 5. 28. 16:53PS (Program Solving)/BOJ (백준)

문제 설명

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

 

25625번: 샤틀버스

3년만에 열리는 대면 SNUPC를 위해서, 민준이는 제2공학관으로 가고자 한다! 제2공학관에 가는 버스는 여러 가지가 있다. 관악02, 5511, 5513, 5516... 어떤 버스를 타더라도 단점이 있는데, 그것은 바로

www.acmicpc.net

백준 BOJ 25625번 샤틀버스 문제 사진

 

접근 방법 - 간단한 사칙연산 문제

백준의 25625번 문제는 간단한 사칙연산을 응용하여 해결할 수 있는 문제이다.

해당 문제는, 2개의 입력값을 통하여 민준이 버스에 탑승할 수 있는 최소 시간을 연산하여 출력해야 하는 문제이다.

여기서 입력값으로는, 입구-공학관 간의 편도 소요시간(x)과 버스가 공학관에 도착하는 시간(y)으로 주어져있다.

필자는 x와 y의 크기를 비교하며 아래와 같이 연산을 수행하면 해결되는 문제라 생각하였다.

- x가 y보다 큰 경우는, 현재 버스가 입구->공학관으로 이동하고 있는 상황임을 의미한다.
버스가 한 바퀴를 돌고 나서 민준이 입구에서 탑승할 수 있는 상황이기 때문에, 이때에는 x+y를 출력한다.
- x가 y보다 작은 경우는, 현재 공학관->입구로 이동하고 있는 상황임을 의미한다.
버스가 현재 입구로 향하고 있고 입구에 도착할 때 민준이 탑승하면 되기 때문에, 이때에는 y-x를 출력한다.
(이때 x와 y가 같은 경우는 현재 버스가 입구에 도착해 있는 상황을 의미하기 때문에, 최소 시간을 출력하기 위해 y-x의 결과인 0을 출력하도록 하였다.)

이 해설에 따라 코드를 그대로 구성하였기 때문에, 상세한 설명은 생략하였다.

필자는 아래처럼 코드를 작성하여 문제를 해결하였다.

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;

//백준 25625번 코드
int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);   cout.tie(NULL);
    
    int x, y;
    cin >> x >> y;
    
    if (x > y) {
        cout << x + y << endl;
    }
    else {
        cout << y - x << endl;
    }
}

 

제출 결과

백준 BOJ 25625번 샤틀버스 문제 C++ 제출 결과

(2023.05.12 백준 25625번 문제 제출 결과)

반응형