[백준 BOJ] 5522번 카드 게임 (C++/cpp)

2023. 2. 14. 11:40PS (Program Solving)/BOJ (백준)

문제 설명

https://www.acmicpc.net/problem/5522

 

5522번: 카드 게임

JOI군은 카드 게임을 하고 있다. 이 카드 게임은 5회의 게임으로 진행되며, 그 총점으로 승부를 하는 게임이다. JOI군의 각 게임의 득점을 나타내는 정수가 주어졌을 때, JOI군의 총점을 구하는 프

www.acmicpc.net

백준 BOJ 5522번 카드 게임 문제 사진1
백준 BOJ 5522번 카드 게임 문제 사진2

 

접근 방법 - 무한 반복문을 응용한 사칙연산 문제

백준의 5522번 문제는 무한 반복문을 응용하여 해결해야 하는 단순 사칙연산 문제이다.

해당 문제는, 여러 데이터가 주어졌을 때 이들의 합을 구하여 출력해야 하는 문제이다.

무한 반복문을 사용하는 방법을 안다면 풀 수 있는 문제이지만, 이때 유의해야 할 점은 데이터의 개수가 입력으로 명시되지 않는다는 점이다.

따라서 이 경우엔, 아래와 같은 구문을 사용하여 입력의 끝에 다다르면 반복문을 종료하게끔 해야 한다.

if (cin.eof() == 1) { break; }

이 원리도 함께 알고 있다면, 매우 쉽게 해결할 수 있었을 것이다.

혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면, 아래의 설명과 코드를 참고해 보길 바란다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 데이터의 합계를 저장할 변수 sum을 0으로 초기화하여 선언한다.

 

2) 무한 반복문을 사용하여, 아래의 연산을 취한다.

- 데이터(a)를 하나씩 입력받는다.

(이때 a에 대해 입력받은 것이 없다면, 해당 반복문을 즉시 종료하도록 한다.)

- sum에 a를 더하도록 한다.

 

3) 연산이 완료되었다면, 최종적으로 저장된 sum의 값을 출력한 뒤 실행 종료한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;

//백준 5522번 코드
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);	cout.tie(NULL);

	int sum = 0;
	while (1) {
		int a;
		cin >> a;
		if (cin.eof() == 1) { break; }
		sum += a;
	}
	cout << sum << endl;
}

 

제출 결과

백준 BOJ 5522번 카드 게임 문제 C++ 제출 결과

(2022.05.19 백준 5522번 문제 제출 결과)

반응형