본문 바로가기

Algorithm

백준 1543 문서 검색 Java

그리디 문제인 문서 검색이다.

문제는 a와 b 두 개의 문자열이 주어졌을 때

a에서 중복되지 않게 b가 몇 번 나오는지 출력하는 문제이다.

 

정답률이 30퍼센트인데 비해 굉장히 간단하다고 생각했다.

앞에서부터 비교해서 문자열 b가 몇 번 나오는지 찾으면 되는 문제이니까..

 

그런데 몇분 후에 맞왜틀을 연발하고 있었다.

분명 맞았는데 왜 틀린 것인가....

질문 검색에 있는 글을 찾다가 그 이유를 알 수 있었다..

 

문자열을 입력받을 때 Scanner 클래스의 .next()로 입력받았었는데

문제에 이런 문구가 있다.

문서와 단어는 알파벳 소문자와 공백으로 이루어져 있다.

공백.... 공백이 문제였다.

.next()는 공백을 기준으로 문자열을 초기화하기 때문이다..

.nextLine()으로 바꾸어주니 바로 해결되었다.

문제를 제발 똑바로 읽어보는 습관을 갖자.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String a = scan.nextLine();
        String b = scan.nextLine();
        int ans = 0;
        
        for(int i=0; i<a.length(); i++) {
            if(a.charAt(i)==b.charAt(0)) {
                boolean ok = true;
                for(int j=0; j<b.length(); j++) {
                    if(i+>= a.length() || a.charAt(i+j) != b.charAt(j)) {
                        ok = false;
                        break;
                    }
                }
                if(ok) {
                    ans++;
                    i+=b.length()-1;
                }
            }
        }
        System.out.println(ans);
    }
 

'Algorithm' 카테고리의 다른 글

백준 1700 멀티탭 스케줄링 Java  (0) 2019.06.27
백준 1202 보석 도둑 Java  (0) 2019.06.24
백준 1182 부분수열의 합 Java  (0) 2019.06.24
백준 2210 숫자판 점프 Java  (0) 2019.06.24
백준 14502 연구소 Java  (1) 2019.06.18