비버놀로지

[JUNGOL 정올] 2514 문자열 찾기 (C++) 본문

ALGORITM/C C++

[JUNGOL 정올] 2514 문자열 찾기 (C++)

KUNDUZ 2023. 1. 12. 16:27
728x90

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1775&sca=2050 

 

JUNGOL

 

www.jungol.co.kr

 

제한시간1000 ms    메모리제한32 MB    해결횟수1354 회    시도횟수1975 회   

문제

주어진 문자열에서 연속 3개의 문자가 IOI 이거나 KOI인 문자열이 각각 몇 개 있는지 찾는 프로그램을 작성하라.


문자열은 알파벳의 대문자로만 이루어진다. 

예를 들어 "KOIOIOI"라는 문자열은 KOI 1개 , IOI 2개가 포함되어있다.

 

 

입력형식

입력은 한 줄이며 10,000자 이하의 알파벳 대문자로 구성된다.

 

출력형식

출력은 2줄이며, 첫 번째 줄에는 KOI의 개수, 두 번째 줄에는 IOI의 개수를 각각 출력하라.

 

입력 예

KOIOIOI

출력 예

1
2

 

입력 예

KORKDIOIDXHKOIOIOIOPKOI

출력 예

2
3

 

문자열에서 find를 활용해서 해당 문자가 있는지 찾는다.

 

해당 문자가 있으면 다음칸으로 밀어주면서 추가적으로 있는지 확인해 준다.

 

#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
	string word = "";
	int koicnt = 0;
	int ioicnt = 0;
	cin >> word;
    // 문자열에 "KOI" 가 있는지 확인
	if (word.find("KOI") != string::npos) {
		int knum = 0;
		while (1) {
        //"KOI"가 없으면 종료
			if ((int)word.find("KOI", knum) == string::npos) {
				break;
			}
			else {
				knum = word.find("KOI", knum)+2;
				koicnt++;
			}
		}
	}
    // 문자열에 "IOI"가 있는지 확인
	if (word.find("IOI") != string::npos) {
		int inum = 0;
		while (1) {
        // "IOI"가 없으면 종료
			if (word.find("IOI", inum) == string::npos) {
				break;
			}
			else {
				inum = word.find("IOI", inum) + 2;
				ioicnt++;
			}
		}
	}
    // 총 갯수 출력
	cout << koicnt << endl << ioicnt;
	return 0;
}

 

728x90
Comments