2023. 1. 25. 17:41ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/26332
26332번: Buying in Bulk
The first input line contains a positive integer, n, indicating the number of customers to check. The customers are on the following n input lines, one customer per line. Each line provides two integers; the first integer c (1 ≤ c ≤ 100) is the number
www.acmicpc.net
접근 방법 - 기본적인 사칙연산 문제
백준의 26332번 문제는 기본적인 사칙연산을 다루고 있는 문제이다.
해당 문제는, 특정 규칙대로 할인을 적용해 준다고 가정하였을 때 지불하여야 하는 물건의 값을 출력해야 하는 문제이다.
문제의 설명이 모두 영어로 적혀있어, 그중 일부를 번역기로 돌려서 아래에 기재해 보았다.
- 하나만 구매하면 할인이 없습니다.
- 2개 이상 구매 시 추가 품목당 2달러씩 할인됩니다.
고객이 구입한 품목의 수와 한 품목의 가격을 고려하여, 고객이 지불할 총비용을 계산해야 합니다.
사실 위의 문제 내용만 이해하면 아주 쉽게 해결할 수 있는 문제라 생각된다.
자세한 내용은 아래에 적어놓으니, 혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면 아래의 설명과 코드를 참고해 보길 바란다.
필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 테스트 케이스의 개수(t)를 입력받는다.
2) t의 크기만큼, 반복문을 실행하여 아래의 연산을 취한다.
- 물품의 개수(n)와 가격(price)을 입력받는다.
- 예시 출력에 나타나는 대로, 우선 n과 price를 순서대로 출력한다.
- 본래 가격에서 할인되는 값을 뺀 결괏값을 즉시 출력하도록 한다.
이때 본래 가격은 price*n이 되며, 할인되는 값은 위 규칙에 따르면 2*(n-1)이 된다.
(물품을 1개 구매할 땐 할인이 안 되고 2개 이상 구매할 시 추가 품목마다 2달러씩 할인되기 때문에 위처럼 적용하였다.)
3) 모든 테스트 케이스에 대한 출력이 완료되었다면, 실행 종료한다.
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;
//백준 26332번 코드
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int t;
cin >> t;
for (int i = 0; i < t; i++) {
int n, price;
cin >> n >> price;
cout << n << " " << price << endl;
cout << price * n - (2 * (n-1)) << endl;
}
}
제출 결과
(2022.12.16 백준 26332번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 21736번 헌내기는 친구가 필요해 (C++/cpp) (0) | 2023.01.30 |
---|---|
[백준 BOJ] 13752번 히스토그램 (C++/cpp) (0) | 2023.01.30 |
[백준 BOJ] 4158번 CD (C++/cpp) (0) | 2023.01.25 |
[백준 BOJ] 25628번 햄버거 만들기 (C++/cpp) (0) | 2023.01.20 |
[백준 BOJ] 10995번 별 찍기 - 20 (C++/cpp) (0) | 2023.01.20 |