본문 바로가기
문제풀이/백준

[JAVA] BOJ 백준 5525번 - IOIOI

by 그적 2023. 10. 1.

목차

  • 문제
  • 내가 푼 방법
  • 자바 코드
  • 결과 및 회고

1. 문제

https://www.acmicpc.net/problem/5525


2. 내가 푼 방법

다른 분의 풀이를 보고 해결한 문제이다.

이 문제의 관건은 IOI 문자열과 매칭될 경우, 처음 I와 매칭되는 위치에서 + 2를 해주어야 한다는 것이다.


3. 자바 풀이

깃허브 풀이 주소

https://github.com/geujeog/BOJ/blob/main/B5525.java

import java.util.*;
import java.io.*;

class Main {
    static int N;
    static int M;
    static String line;
    static int result;

    public static void main (String[] args) throws IOException {
        init();
        solution();
        print();
    }

    public static void solution() {
        int cnt = 0;

        for (int i = 0; i < M-2; i++) {
            if (line.charAt(i) == 'I' && line.charAt(i+1) == 'O' && line.charAt(i+2) == 'I') {
                i++;
                cnt++;

                if (cnt == N) {
                    cnt--;
                    result++;
                }
            }
            else cnt = 0;
        }
    }

    public static void print() throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        bw.write(result+"");

        bw.flush();
        bw.close();
    }

    public static void init() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        N = Integer.parseInt(br.readLine());
        M = Integer.parseInt(br.readLine());
        line = br.readLine();

        br.close();
    }
}

4. 결과 및 회고

처음 풀었을 때는 문자열 함수를 사용하는 방법만 떠올렸다. 당연한 말이지만,, 코테 문제가 함수 사용할 줄 아는지를 확인하는 일은 거의 없으므로,, 함수를 사용하는 것보다 어떤 코드를 구현해야 할지 고민해보장.

 

 

댓글