본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[백준 11008/javascript] 복붙의 달인

by tokkiC 2022. 9. 6.

문자열을 돌며 주어진 특정 문자열을 몇개 가지고 있는지 세는 문제이다

자바스크립트의 indexOf 함수는 첫 인덱스만 알려주므로, for 문을 사용해서 변수i 를 indexOf 함수의 두번째 인자

즉, 검색 시작 위치로 삼고 indexOf 로 -1가 아닌 경우의 인덱스 indexOf 함수의 두번째 인자로 를 갱신해주며

몇번이나 찾았는지를 세어주면 되는 문제이다

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

 

11008번: 복붙의 달인

한신이는 대학교에서 "복붙의 달인"으로 유명하다. 한신이는 타이핑 속도가 느리기 때문에 대학에서 가능한 모든 일을 복붙으로 해결한다. 그는 n개의 문자를 입력하는데 있어서 n초의 시간

www.acmicpc.net

let input = [];

const readline = require("readline").createInterface({
  input: process.stdin,
  output: process.stdout,
});

readline.on("line", (line) => {
  input.push(line);
});

readline.on("close", () => {
  solution(input);
  process.exit();
});

const solution = (inp) => {
  inp.shift();
  let arr = [];
  for (el of inp) {
    arr.push(el.split(" "));
  }
  let ans = [];
  for (el of arr) {
    let cplen = el[1].length;
    let cnt = 0;
    for (let i = 0; i < el[0].length; i++) {
      let pos = el[0].indexOf(el[1], i);
      if (pos === -1) {
        break;
      } else {
        cnt++;
        i = pos + cplen - 1;
      }
    }
    ans.push(el[0].length - cnt * cplen + cnt);
  }
  console.log(ans.join("\n"));
};

댓글