백준 5525 IOIOI (Java,자바)

jonghyukLee·2023년 3월 9일

이번에 풀어본 문제는
백준 5525번 IOIOI 입니다.

📕 문제 링크

❗️코드

내 풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int m = Integer.parseInt(br.readLine());
        char [] s = br.readLine().toCharArray();
        int answer = 0;
        int tmpCnt = 0;
        for (int i = 1; i < m - 1;) {
            if (s[i] == 'O' && s[i + 1] == 'I') {
                tmpCnt++;
                if (tmpCnt == n) {
                    // 맨앞이 I면 카운트++
                    if (s[i - ((n * 2) - 1)] == 'I') answer++;
                    tmpCnt--;
                }
                i += 2;
            }
            else {
                tmpCnt = 0;
                i++;
            }
        }
        System.out.print(answer);
    }
}

참고 풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int m = Integer.parseInt(br.readLine());
        char [] s = br.readLine().toCharArray();
        int answer = 0;
        int tmpCnt = 0;
        for (int i = 1; i < m - 1;) {
            if (s[i] == 'O' && s[i + 1] == 'I') {
                tmpCnt++;
                if (tmpCnt == n) {
                    // 맨앞이 I면 카운트++
                    if (s[i - ((n * 2) - 1)] == 'I') answer++;
                    tmpCnt--;
                }
                i += 2;
            }
            else {
                tmpCnt = 0;
                i++;
            }
        }
        System.out.print(answer);
    }
}

📝 풀이

반복되는 문자열을 카운트하여 출력하는 문제입니다.
무슨 이유인지 결과가 자꾸 50점이 찍혀서 다른 분들의 풀이를 참고해서 다시 제출했습니다.

제가 푼 방법이 평균 시간은 더 빠르다는 것 같은데, 특정 케이스에서 문제가 생기는 것 같네요 ㅠ 원인을 발견하지는 못하여 두 가지 풀이 모두 게시했습니다.

profile
머무르지 않기!

0개의 댓글