문제 출처: www.acmicpc.net/problem/15552
15552번: 빠른 A+B
첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.
www.acmicpc.net
1. 코드
#include <iostream> | |
using namespace std; | |
int main(void) | |
{ | |
cin.tie(NULL); | |
ios::sync_with_stdio(false); | |
int T; | |
cin >> T; | |
for (int i = 0; i < T; i++) | |
{ | |
int A, B; | |
cin >> A >> B; | |
cout << A + B << '\n'; | |
} | |
return 0; | |
} |
2. 풀이
cin.tie(NULL);
메인 함수에 처음에 이것을 선언하는데 이것은 cin과 cout의 묶을 풀어주는 구문이라고 한다. cin으로 데이터를 읽을 때 출력 버퍼에 있는 내용을 비우는데 비우지 않고 먼저 입력을 받는다.
ios::sync_with_stdio(false);
이 구문은 C와 C++의 버퍼를 분리하는 역할을 한다고 한다.
int T;
cin >> T;
그다음에 테스트 케이스의 수를 입력을 한다.
for (int i = 0; i < T; i++)
{
int A, B;
cin >> A >> B;
cout << A + B << '\n';
}
그리고 반복문을 이용하여 테스트 케이스의 수만큼 A와 B를 입력받으며 A + B의 값을 출력하는데 endl 대신 '\n'을 사용한다. 그 이유는 endl은 개행 작업도 하지만 cin처럼 출력 버퍼를 비우는 작업도 한다. 그렇기에 그저 개행 작업만 하는 '\n'을 사용하여 시간을 단축시킨다.
return 0;
그리고 종료하면 끝이다.
3. 느낀 점
cin.tie(NULL);과 ios::sync_with_stdio(false);에 대해서 오늘처럼 알아서 급하게 찾아보기는 했지만 cin과 버퍼에 대해서 이해가 미숙해서 다른 글에 대한 내용을 참고를 했다. 꾸준히 공부해야겠다.
참고한 글: www.acmicpc.net/board/view/22716
글 읽기 - 추가 설명 및 다른 언어 빠른 입출력 방법
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
'컴퓨터 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 11021번: A+B - 7 [C++] (0) | 2020.12.08 |
---|---|
백준 알고리즘 2742번: 기찍 N [C++] (0) | 2020.12.07 |
백준 알고리즘 8393번: 합 [C++][재귀] (0) | 2020.12.03 |
백준 알고리즘 10950번: A+B - 3 [C++] (0) | 2020.12.01 |
백준 알고리즘 2739번: 구구단 [C++] (0) | 2020.11.30 |