suheang

[백준] | JAVA, 자바 | 12780번 - 원피스 본문

알고리즘

[백준] | JAVA, 자바 | 12780번 - 원피스

suheang 2024. 6. 18. 20:42

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

 


문제 요약 :

입력의 첫 줄에는 해적단이 획득한 단서의 문자열 H가 주어진다. (0 < |H| ≤ 100,000)

입력의 두 번째 줄에는 진아가 H에서 등장 횟수를 알고 싶은 문자열 N이 주어진다. (0 < |N| ≤ 10)

단, N과 H는 공백 없는 문자열로 주어지며, 모두 알파벳 대문자로 이루어져 있다.

 

( H에서 N이 몇 번 등장하는지 출력 )


문제 풀이 :

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String h = br.readLine();
        String n = br.readLine();

        int total = 0, index = 0;

        while ((index = h.indexOf(n, index)) != -1) {
            total++;
            index += n.length();
        }
        System.out.println(total);
    }
}

 

1. 획득한 단서 h 입력받기, 등장 횟수를 알고 싶은 문자열 n 입력받기

2. 등장 횟수를 저장할 변수 total, 위치 정보를 저장할 변수 index 생성

3. indexOf를 사용해 문자열 h에서 index 위치부터 문자열 n을 찾고 만약 -1이라면 while 문 종료

4. 찾는데 성공하면 total++, index에 n의 길이만큼 더하고 반복

5. 등장 횟수가 저장된 변수 total 출력