KimMinJun
Coding Note
KimMinJun
전체 방문자
오늘
어제
  • 분류 전체보기 (486)
    • ALGORITHM (11)
      • 정렬 (6)
      • 최단경로 (1)
      • 자료구조 (1)
      • 슬라이딩 윈도우 (1)
      • etc (2)
    • Git (5)
    • Web (24)
      • Vanilla JS (13)
      • TS (2)
      • React (7)
      • ETC (1)
    • React 공식문서 (번역, 공부) (11)
      • Quick Start (2)
      • Installation (0)
      • Describing the UI (9)
      • Adding Interactivity (0)
      • Managing State (0)
      • Escape Hatches (0)
    • Next.js 공식문서 (번역, 공부) (3)
      • Getting Started (2)
      • Building Your Application (1)
    • PS (431)
      • 백준 (187)
      • Programmers (104)
      • CodeUp (21)
      • STL (3)
      • 제코베 JS 100제 (50)
      • SWEA (0)
      • LeetCode (65)
    • IT (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리

공지사항

인기 글

태그

  • recursion
  • C
  • LeetCode
  • 제코베 JS 100제
  • Level 1
  • 백준
  • js
  • string
  • 다이나믹 프로그래밍
  • programmers
  • Level 0
  • 문자열
  • Level1
  • 수학
  • C++
  • Level 2
  • 정렬
  • 그래프
  • tree
  • codeup

최근 댓글

최근 글

hELLO · Designed By 정상우.
KimMinJun

Coding Note

PS/백준

백준 / 문자열 / 5525번 / IOIOI / JS

2024. 11. 9. 22:49

문제 간단설명

N+1개의 I와 N개의 O로 이루어져 있으면, I와 O가 교대로 나오는 문자열을 P_N이라고 한다.
I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 P_N이 몇 군데 포함되어 있는지 구하는 프로그램을 작성하시오.

 

제한 사항

  • 1 <= N <= 1,000,000
  • 2N+1 <= M <= 1,000,000
  • S는 I와 O로만 이루어져 있다.

 

성공 코드

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.txt';
// const filePath = process.platform === 'linux' ? '/dev/stdin' : 'BOJ/input.txt';
const input = fs
  .readFileSync(filePath)
  .toString()
  .trim()
  .split('\n')
  .map((el) => el.trim());

const N = +input.shift();
const M = +input.shift();
const S = input.shift();

function solution() {
    let count = 0;                // 'IOI' 패턴을 찾은 횟수
    let result = 0;               // 원하는 패턴을 찾은 횟수
    let i = 0;
    
    while (i < M - 1) {
      if (S[i] === 'I' && S.slice(i, i + 3) === 'IOI') {  // 'IOI' 패턴 찾기
        count += 1;               // 'IOI' 패턴이 연속되는 수를 세기
        if (count >= N) {
          result += 1;            // 'IOI'가 N번 이상 연속되면 패턴을 찾은 것으로 간주
        }
        i += 2;                   // 'IOI' 패턴을 찾으면 두 칸 이동
      } else {
        count = 0;                // 패턴이 끊기면 count 초기화
        i += 1;
      }
    }
    
    console.log(result);
}

solution();
저작자표시 (새창열림)

'PS > 백준' 카테고리의 다른 글

백준 / 그래프 / 16928번 / 뱀과 사다리 게임 / JS  (0) 2024.12.25
백준 / 구현 / 18111번 / 마인크래프트 / JS  (0) 2024.12.21
백준 / 구현 / 5430번 / AC / JS  (0) 2024.11.08
백준 / 그래프 / 1389번 / 케빈 베이컨의 6단계 법칙 / JS  (0) 2024.11.07
    'PS/백준' 카테고리의 다른 글
    • 백준 / 그래프 / 16928번 / 뱀과 사다리 게임 / JS
    • 백준 / 구현 / 18111번 / 마인크래프트 / JS
    • 백준 / 구현 / 5430번 / AC / JS
    • 백준 / 그래프 / 1389번 / 케빈 베이컨의 6단계 법칙 / JS
    KimMinJun
    KimMinJun

    티스토리툴바