백준 1543 java

magicdrill·2024년 2월 23일

백준 문제풀이

목록 보기
25/673

백준 1543 java

1120번 문제와 비슷하다고 생각된다.
그러나 채점결과에서 시간과 메모리 둘 다 다른 분들의 풀이보다 뒤떨어졌다.
BufferedReader를 사용하지 않고, 이중 for문을 사용한 이유 때문이라고 생각한다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int i, j;
        String A, B;
        int count = 0;
        int A_length, B_length;

        A = scanner.nextLine(); //공백 포함 입력
        B = scanner.nextLine(); //공백 포함 입력
        A_length = A.length();
        B_length = B.length();
        for(i = 0; i <= A_length - B_length; i++) //0부터 (A의 길이 - B의 길이)
        {
            if(A.charAt(i) == B.charAt(0))// A[i]와 B의 첫문자가 같은 경우
            {
                for(j = 1; j < B_length; j++)
                {
                    if(A.charAt(i + j) == B.charAt(j))
                    {
                        ;
                    }
                    else
                    {
                        break;
                    }
                }
                if(j == B_length || B_length == 1)
                {
                    i += B_length - 1;//i를 B의 길이만큼 점프
                    count++;
                }
            }
            else
            {
                ;
            }
        }
        System.out.println(count);

        scanner.close();
    }
}

0개의 댓글