연산 시간을 줄여서 최소한의 연산으로 문자를 탐색하는 로직을 만드는 문제였다
조건에 부분 만족 시 부분 점수를 주는 서브 테스크 문제로서,
부분 점수 50점의 조건은 논리에 이상이 없는지, 100점은 일정 시간내에 풀 수 있는지 였다
find를 통해 이전 문자 탐색처럼 코드를 짜니 시간복잡도가 높아 부분점수를 받았고,
' I ' 이후에 오는 문자들이 IO라는 조건에 맞을 시 그 문자들이 n개 이상이 되어 원하는 문자의 길이를
충족하는지를 앞에서 부터 문자를 하나씩 옮겨가며 충족 시 IO의 문자 수 만큼인 2만큼 인덱스를 추가하여
계속 카운트 해나가는 방식으로 풀면 시간내에 풀 수 있는 문제였다
https://www.acmicpc.net/problem/5525
#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n, m;
int cnt=0;
string s;
cin >> n >> m >> s;
for(int i=0; i<m; i++){
int kt=0;
if(s[i]=='I'){
while((s[i+1]=='O') && (s[i+2]=='I')){
kt++;
if(kt>=n)
cnt++;
i+=2;
}
}
}
cout << cnt << "\n";
return 0;
}
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[백준 11719/c++] 그대로 출력하기 2 (0) | 2022.06.24 |
---|---|
[백준 1157/c++] 단어 공부 - 문자열 (0) | 2022.06.24 |
[백준 1543/c++] 문자 검색 - 문자열 (0) | 2022.06.24 |
[백준 1316/c++] 그룹 단어 체커 - 문자열 (0) | 2022.06.24 |
[백준 1004/c++] 어린 왕자 - 구현 (0) | 2022.06.24 |
댓글