[백준] 15904 UCPC는 무엇의 약자일까?

0

백준

목록 보기
50/271
post-thumbnail

백준 15904 UCPC는 무엇의 약자일까?

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

  • string의 find 함수가 해당 문자가 존재하는지 안하는지 불린 값을 반환하는 함수로 착각하여 오답을 제출하였다

  • 라이브러리 함수를 더 정확히 알고 쓸 수 있도록 공부해야겠다

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

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

	string input;
	int flag = 0;

	//string::npos = -1

	while (true) {
		cin >> input;
		if (cin.eof()) break;

		int found;

		if (flag == 0) {
			found = input.find('U');
			if (found != -1) {
				input = input.substr(found, -1);
				++flag;
			}
		}
		if (flag == 1) {
			found = input.find('C');
			if (found != -1) {
				input = input.substr(found, -1);
				++flag;
			}
		}
		if (flag == 2) {
			found = input.find('P');
			if (found != -1) {
				input = input.substr(found, -1);
				++flag;
			}
		}
		if (flag == 3) {
			found = input.find('C');
			if (found != -1) {
				cout << "I love UCPC";
				return 0;
			}
		}
	}

	cout << "I hate UCPC";
	return 0;
}

📌참고자료

  • 문자열을 찾았다면, 해당 문자열이 처음으로 나타날 때의 시작 위치를 리턴한다
    문자열을 찾지 못 한 경우 npos를 리턴한다
  • unsigned int 타입의 string::npos는 int로 변환했을 때 대응되는 값이 -1이다
basic_string substr(size_type pos = 0, size_type count = npos) const;
  • 문자열의 pos 번째 문자 부터 count 길이 만큼의 문자열을 리턴한다
  • 전달된 count가 문자열 보다 길다면, 그 이상을 반환하지 않고 문자열의 끝까지만 리턴한다
  • 전달된 count가 npos라면, 자동으로 pos부터 원래 문자열의 끝까지 리턴한다
profile
Be able to be vulnerable, in search of truth

0개의 댓글