✏️ 풀이
처음에는 파이썬을 활용해서 슬라이싱윈도우를 통해서 일정 구간을 잘라 일치하는지 풀었다. 하지만 그렇게 풀어서 채점을 하니 50점밖에 나올 수 없었다. 그래서 고민을 했는데 도저히 모르겠어서 아이디어를 구했다.
반복문을 통해서 "IOI"패턴을 체크하는 방법이다. 처음에 IOI를 체크하고 그 다음 패턴들도 확인을 했다. 패턴의 갯수가 처음 입력한 N과 동일할 시에 cnt를 높혔다. 그리고 idx를 2씩 증가하여 I로 시작할 수 있게 만들었다. 이런 방식을 통해서 문자열내의 같은 패턴을 찾아내는 방식이다.
💻 코드
#include <iostream>
#include <string>
using namespace std;
int main(void){
int n, s_len;
string s;
cin >> n >> s_len >> s;
int count = 0, pattern = 0, idx = 0;
while(idx < s_len-2){
if(s[idx] == 'I' && s[idx+1] == 'O' && s[idx+2] == 'I'){
pattern++;
if(pattern == n){
count++;
pattern--;
}
idx++;
}else{
pattern = 0;
}
idx++;
}
cout << count << endl;
}
'PS > 백준' 카테고리의 다른 글
[백준] 2589 - 보물섬 (0) | 2024.04.13 |
---|---|
[백준] 5430 - AC (2) | 2024.01.11 |
[백준] 25418 - 정수 a를 k로 만들기 (1) | 2024.01.11 |
[백준] 2583 - 영역 구하기 (0) | 2024.01.11 |
실버2 색종이 만들기(2630) (1) | 2024.01.01 |