문제 간단설명
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 |