[백준 1543] 문서 검색

문제

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

아이디어

  1. 전체 문서 내용을 순회하면서 일치하는 단어를 찾는다면 카운트를 증가시키고 단어가 끝나는 부분의 한 칸 뒤부터 다시 순회한다.

소스코드

// 입력 정제
const fs = require("fs");

function getInput(caseID) {
  const filePath = process.platform === "linux" ? "/dev/stdin" : `./${__dirname.split('\\').pop()}/i${caseID}.txt`;
  const input = fs.readFileSync(filePath).toString().split("\n").map(item => item.trim());
  input.pop();
  
  const dict = input.shift();
  const word = input.shift();
  return [dict, word];
}

// 문제
const [dict, word] = getInput(1);
let count = 0;

// 원하는 단어가 있는지를 찾는 함수
function search(idx) {
  let i;

  // 단어를 찾지 못했으면 원래 위치 반환
  for (i = 0; i < word.length; i++) {
    if (dict[idx + i] !== word[i]) return idx;
  }

  // 원하는 단어를 찾았다면 그 단어가 끝나는 부분의 위치 반환
  count++;
  return idx + i - 1;
}

function solution() {
  for (let i = 0; i < dict.length; i++) {
    i = search(i);
  }

  console.log(count);
}

// 실행
solution();

Written by@bbearcookie
Frontend 개발자가 되려고 하는 컴퓨터공학과 학생입니다. React 와 Express 같은 JS, TS 기반의 기술에 관심이 있습니다.