링크 : https://www.acmicpc.net/problem/1543
문제 설명
더보기
문제
세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한다. 예를 들어, 문서가 abababa이고, 그리고 찾으려는 단어가 ababa라면, 세준이의 이 함수는 이 단어를 0번부터 찾을 수 있고, 2번부터도 찾을 수 있다. 그러나 동시에 셀 수는 없다.
세준이는 문서와 검색하려는 단어가 주어졌을 때, 그 단어가 최대 몇 번 중복되지 않게 등장하는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 문서가 주어진다. 문서의 길이는 최대 2500이다. 둘째 줄에 검색하고 싶은 단어가 주어진다. 이 길이는 최대 50이다. 문서와 단어는 알파벳 소문자와 공백으로 이루어져 있다.
출력
첫째 줄에 중복되지 않게 최대 몇 번 등장하는지 출력한다.
문제 풀이
찾으려는 단어의 index를 찾고 해당 값이 있다면 answer 1증가
문서를 (해당 index + 단어길이)로 잘라 위 작업을 반복
const inputs = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");
let document = inputs[0];
let word = inputs[1];
let answer = 0;
while (document.indexOf(word) !== -1) {
answer++;
document = document.slice(document.indexOf(word) + word.length);
}
console.log(answer);
결론
slice를 이용하여 답을 구할 수 있지만 split()을 이용해서도 특정 문자가 몇개 있는지 확인 할 수 있음
‘ababa’ → ‘ab’일 때 split이용
document.split('ab').length - 1
‘ab’를 기준으로 split을 할 경우 [’’, ‘’, ‘a’] 가 나옴
즉, length(3) - 1을 하면 2개가 나오는걸 확인할 수 있음
'코딩테스트 > 문자열' 카테고리의 다른 글
백준 17413 단어 뒤집기 2 (0) | 2025.02.11 |
---|---|
백준 5052 전화번호 목록 (4) | 2025.01.20 |