[백준/Java] 5525 - IOIOI

2025. 9. 12. 11:06·코딩테스트/백준

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

문제


풀이

주어진 문자열 안에 P_N이 몇 개 있는지 구하는 문제이다

전체 문자열을 매번 잘라서 P_N과 맞는지 확인하는 것은 시간 초과가 날 것이다

 

P_N은 `IOI` 기본 패턴이 반복되는 형태이다.

예를 들어 P_2 = IOIOI 는 IOI를 포함하고 있다

이 점을 활용해서 전체 문자열을 한번만 순회하면서 IOI가 연속으로 몇 번 나오는지를 세는 것이 핵심이다

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

public class Main {


	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		StringBuilder sb = new StringBuilder();

		List<Character> list = new LinkedList<>();

		int N = Integer.parseInt(br.readLine());
		int M = Integer.parseInt(br.readLine());
		String str = br.readLine();

		int count = 0; // 연속된 IOI 패턴 개수
		int result = 0; // 최종 개수
		for (int i = 0; i < M - 2; i++) {
			// 현재 위치에서 연속된 세 글자가 IOI 인지 확인
			if (str.charAt(i) == 'I' && str.charAt(i + 1) == 'O' && str.charAt(i + 2) == 'I') {
				count++; // 연속 카운트 증가

				// 연속 카운트가 N에 도달하면 P_N을 찾은 것
				if (count == N) {
					result++; // 최종 개수 증가
					// 다음 IOI는 이전 I를 공유한다
					// IOIOI (N=2)에서 다음 IOI는 세번째 I부터 시작
					// 따라서 count를 하나 줄여야 한다
					count--;
				}
				i++; // OI 만큼 건너뛰기
			} else {
				count = 0;	// 패턴이 깨지면 초기화
			}
		}

		System.out.println(result);

		br.close();
	}
}

결과

'코딩테스트/백준' 카테고리의 다른 글
  • [백준/Java] 11403 - 경로 찾기
  • [백준/Java] 11286 - 절댓값 힙
  • [백준/Java] 2178 - 미로 탐색
  • [백준/Java] 1697 - 숨바꼭질
KDH.dev
KDH.dev
  • KDH.dev
    CodingHard
    KDH.dev
  • 전체
    오늘
    어제
    • 전체글 (82)
      • 코딩테스트 (74)
        • 프로그래머스 (13)
        • 백준 (61)
      • CS (4)
        • 네트워크 (4)
      • Spring (1)
      • Java (3)
        • 자료구조 (3)
        • 알고리즘 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    16935
    부트캠프후기
    자료구조
    프로그래머스
    30804
    [LG유플러스] 유레카 백엔드 개발자
    프로그래머스 Lv.0
    18111
    17626
    멀티캠퍼스it부트캠프
    CS
    5525
    21736
    13913
    코딩테스트
    14940
    네트워크
    11660
    백준
    자바
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
KDH.dev
[백준/Java] 5525 - IOIOI
상단으로

티스토리툴바