컴굥일지

[BOJ/백준 15904][C++] UCPC는 무엇의 약자일까? 본문

알고리즘/코테 문제

[BOJ/백준 15904][C++] UCPC는 무엇의 약자일까?

gyong 2022. 1. 19. 16:50
반응형

문제

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

 

문제 내용

문자열을 입력받아 임의의 문자를 적절히 제거하여 UCPC를 만들 수 있는지 없는지를 판단하는 문제이다.
가능하다면 I love UCPC를, 불가능하다면 I hate UCPC를 출력하면 된다.

 

문제 풀이

공백이 포함된 문자열을 입력받기 위해 getline() 함수를 사용한다.

이후 find() 함수를 사용하여 U C P C의 위치를 받는다.
참고로 find() 함수는 대상문자열.find(찾는 대상, 시작 위치)의 방식으로도 쓸 수 있다.
(찾는 대상이 존재하지 않으면 -1을 반환한다.)

앞의 문자의 위치를 뒤의 문자의 시작 위치로 주면, find() 함수가 반환하는 위치가 U <C <P <C 가 된다.

 

코드

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	//입력
	string str="";
	getline(cin, str); //공백이 있는 문장을 입력받기 위함
	
    	//문제 풀이
	int n1, n2, n3, n4; //각 문자의 위치

	n1 = str.find('U');
	n2 = str.find('C',n1);
	n3 = str.find('P',n2);
	n4 = str.find('C',n3);
	
    	//결과 출력
	if (n1 == -1 || n2 == -1 || n3 == -1 || n4 == -1) {
		cout << "I hate UCPC";
	}
	else {
		cout << "I love UCPC";
	}

}

 

문제 코드 설명

1) 입력

공백이 포함된 문자열을 입력 받기 위해 getline()을 사용한다.

 

2) 문제 해결

find()함수를 사용한다.

 

3) 결과 출력

-1이 하나라도 존재하면 I hate UCPC를, 모두 -1이 아니라면 I love UCPC를 출력한다.

반응형
Comments