이 영역을 누르면 첫 페이지로 이동
Stranger's LAB 블로그의 첫 페이지로 이동

Stranger's LAB

페이지 맨 위로 올라가기

Stranger's LAB

프로그래밍과 관련하여 다양한 알고리즘 문제를 풀어보고, 프로그래밍 언어를 이해해 볼 수 있도록 돕고자 만든 블로그 입니다.

[백준] 11022번 : A+B - 8 - [C++]

  • 2021.05.02 18:19
  • C++ - 백준 [BAEK JOON]/반복문
글 작성자: ST_
728x90





 
www.acmicpc.net/problem/11022

 

11022번: A+B - 8

각 테스트 케이스마다 "Case #x: A + B = C" 형식으로 출력한다. x는 테스트 케이스 번호이고 1부터 시작하며, C는 A+B이다.

www.acmicpc.net

 

 

 

 

 

 

 

 





  • 문제

 

 

 

 

 

 

바로 직전 문제인 A+B - 7 과 거의 같은 문제다.

 

 

 

 

 

 

 

 





  • 알고리즘 [접근 방법]

 



 

 

이 번 문제는 크게 설명할 것이 없다...

혹시 이 문제를 처음 접한다면 다음 글을 먼저 참고하시길 바란다.

 

st-lab.tistory.com/242

 

[백준] 11021번 : A+B - 7 - [C++]

www.acmicpc.net/problem/11021 11021번: A+B - 7 각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다. www.acmicpc.net 문제 이 번 문제는 별로 어려울 게..

st-lab.tistory.com

 

 

 

 

우리가 이 번 문제에서 고려해야 할 점은 세 가지다.

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++의 표준 입출력 동기화를 끊어주고, 입력과 출력 또한 묶여있는 것을 끊어주는 방법이다.

 

이 방법을 잘 모른다면 다음 글을 참고하시길 바란다.

st-lab.tistory.com/232

 

[백준] 15552번 : 빠른 A+B - [C++]

www.acmicpc.net/problem/15552 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmi..

st-lab.tistory.com

 

 

 

 

#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

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [백준] 2439번 : 별 찍기 - 2 - [C++]

    [백준] 2439번 : 별 찍기 - 2 - [C++]

    2021.05.11
  • [백준] 2438번 : 별 찍기 - 1 - [C++]

    [백준] 2438번 : 별 찍기 - 1 - [C++]

    2021.05.08
  • [백준] 11021번 : A+B - 7 - [C++]

    [백준] 11021번 : A+B - 7 - [C++]

    2021.04.26
  • [백준] 15552번 : 빠른 A+B - [C++]

    [백준] 15552번 : 빠른 A+B - [C++]

    2021.03.28
다른 글 더 둘러보기

정보

Stranger's LAB 블로그의 첫 페이지로 이동

Stranger's LAB

  • Stranger's LAB의 첫 페이지로 이동

검색

나의 외부 링크

  • st-github

공지사항

  • 공지 - 블로그 사용 설명서

메뉴

  • 홈
  • 방명록

카테고리

  • 전체 카테고리 (267)
    • Java (5)
    • JAVA - 백준 [BAEK JOON] (177)
      • 입출력과 사칙연산 (14)
      • 조건문 (7)
      • 반복문 (11)
      • 1차원 배열 (7)
      • 함수 (3)
      • 문자열 (10)
      • 기본 수학 1 (8)
      • 기본 수학 2 (6)
      • 2차원 배열 (0)
      • 정렬 (10)
      • 재귀 (4)
      • 브루트 포스 (5)
      • 집합과 맵 (0)
      • 기하 1 (5)
      • 정수론 및 조합론 (12)
      • 백트래킹 (8)
      • 동적 계획법 1 (15)
      • 누적 합 (0)
      • 그리디 알고리즘 (5)
      • 스택 (5)
      • 큐, 덱 (7)
      • 분할 정복 (9)
      • 이분 탐색 (7)
      • 기타 문제 (17)
      • 별 찍기 문제 모음 (2)
    • C++ - 백준 [BAEK JOON] (46)
      • 입출력과 사칙연산 (14)
      • 조건문 (7)
      • 반복문 (11)
      • 1차원 배열 (7)
      • 함수 (3)
      • 문자열 (0)
      • 기타 문제 (4)
    • 자료구조 (18)
      • Java (18)
    • 알고리즘 (11)
      • Java (11)
    • 프로그래밍 기초 (6)
    • 이모저모 (2)
    • 일상의 글 (2)

최근 글

정보

ST_의 Stranger's LAB

Stranger's LAB

ST_

블로그 구독하기

  • 구독하기
  • 네이버 이웃 맺기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © ST_.

티스토리툴바