2024. 11. 16. 16:54ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/26530
접근 방법 - 기초적인 실수 덧셈 연산 문제
백준의 26530번 문제는 실수 덧셈을 활용하여 쉽게 해결할 수 있는 문제이다.
해당 문제는, 각 테스트 케이스에 대하여 사야 할 물품들의 이름/개수/가격이 입력으로 주어질 때 물품 구매를 하기 위해 필요한 금액의 총액수를 구하여 출력해야 하는 문제이다.
해당 문제 지문은 영어로 작성되어 있어, 한국어 지문 요약을 확인하고 싶다면 아래 글을 참고하면 된다.
https://www.acmicpc.net/board/view/149305
이 문제는 아주 간단하게, 실수에 대하여 입력을 받고 각 물품 가격에 있어 필요한 개수만큼 곱한 값들을 모두 더한 총합을 구하여 출력하면 되는 문제이다.
다만 정답을 실수 형태로 소수점 두 번째 자릿수까지만 출력해야 하는데, 이 점만 잘 고려하면 쉽게 해결할 수 있을 것이다.
필자는 C++로 문제를 풀었는데, 소수점 두 번째 자릿수까지 출력하는 부분은 아래 구문을 통하여 설정해 두었다.
cout << fixed;
cout.precision(2);
좀 더 자세한 설명과 코드는 아래에 적어놓으니, 혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면, 아래를 참고하면 된다.
필자는 아래처럼 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 입력을 받기 이전에, 실수 출력 시 소수점 두 번째 자릿수까지 출력할 수 있도록 미리 설정해 둔다. (위의 코드블록 참조)
2) 테스트 케이스의 수(t)를 입력받는다.
3) t의 크기만큼 반복하여, 아래의 연산을 취한다.
- 물건의 개수(n)를 입력받는다.
- 가격의 총합을 저장할 변수 sum을 0으로 초기화하며 실수 형태로 선언한다.
- n의 크기만큼 반복문을 수행하여, 각 물건의 이름/개수/개당 가격(name/num/price)을 순차적으로 입력받는다.
이때, 입력을 받는 대로 num*price를 sum에 더하도록 한다.
- 입력 및 덧셈 연산이 끝났다면, 문제에 있는 출력 양식대로 정답을 출력한다.
4) 3)의 연산이 모두 종료되었다면, 정답 출력은 모두 완료되었기 때문에 실행 종료한다.
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;
//백준 26530번 코드
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cout << fixed;
cout.precision(2);
int t;
cin >> t;
for (int i = 0; i < t; i++) {
int n;
cin >> n;
cin.ignore();
double sum = 0;
for (int j = 0; j < n; j++) {
string name;
int num;
double price;
cin >> name >> num >> price;
sum += num * price;
}
cout << "$" << sum << endl;
}
}
제출 결과
(2024.09.13 백준 26530번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 28519번 Планеты двух измерений (C++/cpp) (1) | 2024.11.30 |
---|---|
[백준 BOJ] 1969번 DNA (C++/cpp) (0) | 2024.11.24 |
[백준 BOJ] 10178번 할로윈의 사탕 (C++/cpp) (0) | 2024.10.03 |
[백준 BOJ] 30402번 감마선을 맞은 컴퓨터 (C++/cpp) (0) | 2024.08.24 |
[백준 BOJ] 17176번 암호해독기 (C++/cpp) (0) | 2024.08.10 |