[백준 BOJ] 20233번 Bicycle (C++/cpp)

2024. 4. 13. 11:08PS (Program Solving)/BOJ (백준)

문제 설명

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

 

20233번: Bicycle

The first four lines of the input contain integers $a$, $x$, $b$, and $y$ ($0 \leq a, x, b, y \leq 100$), each on a separate line. The last line contains a single integer $T$ ($1 \leq T \leq 1440$) --- the total time spent on a bicycle during each day.

www.acmicpc.net

백준 BOJ 20233번 Bicycle 문제 사진

 

접근 방법 - 사칙연산을 활용한 기초적인 수학 문제

백준의 20233번 문제는 사칙연산을 활용하여 해결할 수 있는 기초적인 수학 문제이다.

해당 문제는, 2가지의 자전거 이용 서비스가 있고 하루 사용 시간과 각 사용 금액이 주어질 때 21일 간 소비되는 2가지 서비스의 각 비용을 구하여 출력해야 하는 문제이다.

이때 2개 자전거 이용 서비스의 비용 규칙은 아래와 같다.

1. 월 요금은 a 루블. 매일 첫 30분은 무료이며, 1분 추가될 때마다 x 루블 추가 부과됨
2. 월 요금은 b 루블. 매일 첫 45분은 무료이며, 1분 추가될 때마다 y 루블 추가 부과됨

해당 문제의 질문 게시판에 문제 지문의 한글 해석본이 있으니, 함께 참고하면 좋을 것이다. 

https://www.acmicpc.net/board/view/85870

 

글 읽기 - (번역) 20233 - 자전거

댓글을 작성하려면 로그인해야 합니다.

www.acmicpc.net

 

필자는 문제에 있는 내용대로, 위 2가지 경우를 각각 연산한 결괏값을 그대로 출력하게끔 하였다.

자세한 내용은 아래에 기재해 놓으니, 혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면 아래의 설명과 코드를 참고해 보길 바란다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 2개 서비스의 월 기본요금 및 1분당 추가 요금(a, x, b, y), 그리고 이용 시간(time)을 입력받는다.

 

2) 2개 경우에 대한 비용을, 각 one과 two 변수에 저장하도록 한다.

one의 값을 월 기본요금인 a 값으로 초기화한다. 이때 time이 30을 초과한다면, 초과한 시간만큼의 21일분을 x에 곱하여 one에 추가하도록 한다.

two의 값을 월 기본요금인 b 값으로 초기화한다. 이때 time이 45를 초과한다면, 초과한 시간만큼의 21일분을 y에 곱하여 two에 추가하도록 한다.

 

3) 위 연산이 모두 완료되었다면, 현재 저장되어 있는 one과 two의 값을 순차적으로 출력한 뒤 실행 종료한다.

반응형

 

성공한 코드

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

//백준 20233번 코드
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);	cout.tie(NULL);

	int a, b, x, y, time;
	cin >> a >> x >> b >> y >> time;

	int one = a;
	if (time > 30) { one += x * (time - 30) * 21; }
	int two = b;
	if (time > 45) { two += y * (time - 45) * 21; }
	cout << one << " " << two << endl;
}

 

제출 결과

백준 BOJ 20233번 Bicycle 문제 C++ 제출 결과

(2024.03.12 백준 20233번 문제 제출 결과)

반응형