본문 바로가기

CodingTest/BOJ

[BOJ 20001] 백준 고무오리 디버깅 풀이 - C++

사용언어 :  C++

 

 

 

문제풀이

 * stack 이용하기!

 

(1) 문자열을 입력받을 땐 getline을 사용한다

("고무오리 디버깅 끝", "고무오리 디버깅 시작"은 공백을 포함하기 때문)

(2) "문제" : stack push 한번. "고무오리" : stack pop 한번 (스택이 비어있으면 push 두번)

 

 

 

전체코드

 

#include<iostream>
using namespace std;
#include<string>
#include<stack>
string str;
stack<int> s;
int main() {
	getline(cin, str);

	while (str!="고무오리 디버깅 끝") {
		getline(cin, str);
		if (str == "문제")
			s.push(1);
		else if (str == "고무오리")
			if (s.empty()) {
				s.push(1);
				s.push(1);
			}
			else
				s.pop();
	}

	if (s.empty())
		cout << "고무오리야 사랑해";
	else
		cout << "힝구";
}

 

 

 

총평

stack을 연습하기 위한 문제였지만, 굳이 stack을 이용하지 않고 문제 count, 고무오리 count를 비교해서 답을 구할 수 있다고 생각했는데, 그렇게 되면 해당 시점에 풀 문제가 없을 때 문제를 두 개 추가하는 부분을 구현하기 어려울 것 같아서 그냥 stack을 이용하기로 했다.

+cin>>str으로 하면 "고무오리 디버깅 끝", "고무오리야 사랑해" 를 인식하는 데에 어려움이 있다.

 


문제 출처

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

 

20001번: 고무오리 디버깅

백준 문제 풀이에 힘들어하는 수진이를 위해 민우는 문제해결에 도움이 되는 고무오리를 준비했다. 민우가 준비한 고무오리는 신비한 능력이 존재하는데, 최근에 풀던 백준 문제를 해결해주는

www.acmicpc.net