2024. 4. 13. 11:08ㆍPS (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
접근 방법 - 사칙연산을 활용한 기초적인 수학 문제
백준의 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;
}
제출 결과
(2024.03.12 백준 20233번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 1449번 수리공 항승 (C++/cpp) (0) | 2024.05.04 |
---|---|
[백준 BOJ] 26069번 붙임성 좋은 총총이 (C++/cpp) (0) | 2024.04.15 |
[백준 BOJ] 27466번 그래서 대회 이름 뭐로 하죠 (C++/cpp) (0) | 2024.04.06 |
[백준 BOJ] 6840번 Who is in the middle? (C++/cpp) (0) | 2024.03.10 |
[백준 BOJ] 1244번 스위치 켜고 끄기 (C++/cpp) (0) | 2024.03.10 |