[백준] 11022번 : A+B - 8 - [C++]
- 문제
바로 직전 문제인 A+B - 7 과 거의 같은 문제다.
- 알고리즘 [접근 방법]
이 번 문제는 크게 설명할 것이 없다...
혹시 이 문제를 처음 접한다면 다음 글을 먼저 참고하시길 바란다.
우리가 이 번 문제에서 고려해야 할 점은 세 가지다.
1. 두 정수의 덧셈을 출력해야 한다는 점
2. 매 출력시 "Case #N: " 이 붙는다는 점 (T는 테스트 케이스)
3. A와 B를 출력해야한다는 점.
즉, 직전 문제에 3번 조건만 더 추가해주면 된다.
먼저 Case #N을 쉽게 출력할 수 있도록 for문을 1부터 T까지 반복문을 짜준다.
for(int i = 1; i <= T; i++) {
// ...code...//
}
그리고 두 정수(A, B)를 입력 받고, 위 출력 형식에 맞게 출력을 해주면 된다.
for(int i = 1; i <= T; i++) {
int a;
int b;
cin >> a >> b;
cout << "Case #" << i << ": " << a << " + " << b << " = " << a + b << "\n"; //(또는 endl;)
}
이 것이 끝이다..
- 2가지 방법을 사용하여 풀이한다.
이 전에 빠른 A+B를 풀어보셨다면 알겠지만, C++는 입출력이 기본적으로 C의 기본 입출력과 동기화 되어있어서 상대적으로 느리다. 그래서 두 io의 동기화를 끊어주고, 입력과 출력 묶음을 풀어주면 성능적으로 이득을 볼 수 있지만, 아직 익숙치 않은 분들도 계실 것 같아 일반적인 방법과 입출력 향상 방법 이렇게 두 가지 방법을 보여주고자 한다.
알고리즘 자체는 위 내용을 그대로 적용하면 된다.
1. 기본 입출력
2. 향상된 입출력
- 풀이
- 방법 1 : [기본 입출력]
#include <iostream>
using namespace std;
int main(int argc, char const *argv[]) {
int T;
cin >> T; // Test Case
for (int i = 1; i <= T; i++) {
int a;
int b;
cin >> a >> b;
cout << "Case #" << i << ": " << a << " + " << b << " = " << a + b << "\n"; //(또는 endl;)
}
return 0;
}
가장 기본적인 방법이다.
- 방법 2 : [향상된 입출력]
앞서 말했듯, C와 C++의 표준 입출력 동기화를 끊어주고, 입력과 출력 또한 묶여있는 것을 끊어주는 방법이다.
이 방법을 잘 모른다면 다음 글을 참고하시길 바란다.
#include <iostream>
using namespace std;
int main(int argc, char const *argv[]) {
ios_base::sync_with_stdio(false); // 동기화 해제
cin.tie(NULL); // 입출력 묶음 해제
int T;
cin >> T; // Test Case
for (int i = 1; i <= T; i++) {
int a;
int b;
cin >> a >> b;
cout << "Case #" << i << ": " << a << " + " << b << " = " << a + b << "\n"; //(또는 endl;)
}
return 0;
}
크게 어려울 것은 없을 것이다.
- 성능
채점 번호 : 28905512 - 방법 2 : 향상된 입출력
채점 번호 : 28905506 - 방법 1 : 기본 입출력
보다시피 sync_stdio_with(false)와 cin.tie(NULL)을 해주니 시간이 단축 된 것을 볼 수 있다.
- 정리
이 번 문제는 직전 문제에서 출력문만 조금 조정해주면 되는 문제여서 어렵지 않게 바로 풀었을 것이다. 만약 어렵거나 이해가 되지 않은 부분이 있다면 언제든 댓글 남겨주시면 최대한 빠르게 답변드리겠다.
'C++ - 백준 [BAEK JOON] > 반복문' 카테고리의 다른 글
[백준] 2439번 : 별 찍기 - 2 - [C++] (1) | 2021.05.11 |
---|---|
[백준] 2438번 : 별 찍기 - 1 - [C++] (0) | 2021.05.08 |
[백준] 11021번 : A+B - 7 - [C++] (0) | 2021.04.26 |
[백준] 15552번 : 빠른 A+B - [C++] (6) | 2021.03.28 |
[백준] 8393번 : 합 - [C++] (0) | 2021.03.26 |