본문 바로가기
알고리즘/백준

[백준 2857] FBI (C++)

by fortissimo 2024. 12. 27.

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

문제


5명의 요원 중 FBI 요원을 찾는 프로그램을 작성하시오.

FBI요원은 요원의 첩보원명에 FBI가 들어있다. 

 

입력


5개 줄에 요원의 첩보원명이 주어진다. 첩보원명은 알파벳 대문자, 숫자 0~9, 대시 (-)로만 이루어져 있으며, 최대 10글자이다.

 

출력


첫째 줄에 FBI 요원을 출력한다. 이때, 해당하는 요원이 몇 번째 입력인지를 공백으로 구분하여 출력해야 하며, 오름차순으로 출력해야 한다. 만약 FBI 요원이 없다면 "HE GOT AWAY!"를 출력한다.

 

문제 풀이


문자열 문제.

 

FBI 요원의 첩보명에는 FBI가 들어가 있다. String.find(string str)를 사용하면 해당 문자열에 찾으려는 문자열 str이 있는지 확인할 수 있다. 만약 있다면 첫번째 인덱스를 반환하고, 아니라면 string에 정의되어 있는 npos라고 정의되어 있는 정수를 반환한다.

해당 함수를 이용하여 FBI가 문자열 속에 있다면 몇 번째 입력인지 출력해주면 된다.

 

아래는 코드.

더보기
#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
	string str;
	vector<int> FBI;
	for (int i = 1; i <= 5; i++)
	{
		cin >> str;
		if (str.find("FBI") != string::npos)
		{
			FBI.push_back(i);
		}
	}
	if (FBI.empty())
	{
		cout << "HE GOT AWAY!" << "\n";
	}
	for (int i = 0; i < FBI.size(); i++)
	{
		cout << FBI.at(i) << " ";
	}
	return 0;
}