본문 바로가기
PS 문제 풀이/Jungol

[Jungol] 정올 2514 문자열 찾기

by 까망 하르방 2021. 3. 14.
반응형

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

Approach

입력받은 문자열을 차례대로 탐색하면서 'K'와 'I' 문자를 찾습니다.

찾은 지점(idx)에서 idx+1, idx+2번째 위치의 문자가 'O'와 'I' 인 경우 'KOI'와 'IOI'를 각각 만족합니다.


#include <stdio.h>
 
int ans1, ans2;
char str[10000 + 10];
char oi[] = { 'O', 'I' };
 
int len(const char* str) {
    
    int ret = 0;
    for (;;) {
        if (str[ret] == '\0') break;
        ret++;
    }
    return ret;
}
 
bool check_OI(int idx) {
    for (int i = idx + 1; i < idx + 3; ++i) {
        // 순차적으로 O와 I 일치 여부
        if (str[i] != oi[i - idx - 1]) return false;
    }
    return true;
}
 
int main() {
    // freopen("input.txt", "r", stdin);
    scanf("%s", &str);
 
 
    // KOI와 IOI를 글자를 찾아야 하므로
    // 글자의 시작 인덱스 탐색
    for (int i = 0; i < len(str) - 2; ++i) {
        if (str[i] == 'K' && check_OI(i)) {
            ans1++;
        }
        if (str[i] == 'I' && check_OI(i)) {
            ans2++;
        }
    }
 
 
    printf("%d\n", ans1);
    printf("%d\n", ans2);
}

 

반응형

댓글