[백준 BOJ] 26489번 Gum Gum for Jay Jay (C++/cpp)

2023. 1. 13. 09:57PS (Program Solving)/BOJ (백준)

문제 설명

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

 

26489번: Gum Gum for Jay Jay

You are lost in the museum and keep walking by a giant rock head that says “gum gum for jay jay” each time you walk by. Print out the number of times you have walked by the giant rock head after reading in the data file.

www.acmicpc.net

백준 BOJ 26489번 Gum Gum for Jay Jay 문제 사진

 

접근 방법 - 입출력에 대한 응용문제

백준의 26489번 문제는 입출력에 있어 아주 조금 심화적인 부분을 다루고 있는 문제이다.

해당 문제는, 입력받은 문자열에 대하여 총 몇 줄을 입력받았는지에 대한 해답을 출력해야 하는 문제이다.

우선 입력이 끝날 때까지 한 줄씩 입력을 계속 받아야 하기 때문에 무한 반복문을 사용해야 한다.

다만 프로그램 상에선 입력이 언제 끝날지 예상할 수 없기 때문에, cpp를 사용하는 필자는 아래의 구문을 사용하였다.

if(cin.eof()==1) {break;}
// 입력의 끝에 다다랐다면, 반복문을 탈출하라.

필자는 위 조건문을 만족하면 연산을 종료하고, 만족하지 않으면 해답의 값을 늘리는 식으로 코드를 작성하였다.

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

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

 

코드의 실행 순서

1) 입력의 총 줄 수를 저장할 변수 count를 0으로 초기화하여 선언한다.

 

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

- 문자열(st)을 한 줄씩 입력받는다. 

(이때, 공백을 포함한 입력값이 주어지기 때문에, cpp의 경우 아래의 구문을 사용하여 공백을 포함한 입력을 받도록 한다.)

getline(cin, st);
// 공백을 포함한 입력값을 받아, 해당 값을 st에 저장하라.

- 만일 cin.eof()를 만족하면, 입력의 종료에 다다랐음을 의미한다. 따라서 이 경우엔, 해당 반복문을 나오도록 한다.

다만 위 조건을 만족하지 않다면, 이 뒤로 입력값이 더 남아있음을 의미한다. 따라서 이 경우엔, count에 1을 더하여 총 줄 수에 포함시킨다.

 

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

반응형

 

성공한 코드

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

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

	int count = 0;
	while (1) {
		string st;
		getline(cin, st);
		if (cin.eof() == 1) { break; }

		count++;
	}
	cout << count << endl;
}

 

제출 결과

백준 BOJ 26489번 Gum Gum for Jay Jay 문제 C++ 제출 결과

(2023.01.05 백준 26489번 문제 제출 결과)

반응형