티스토리 뷰

반응형

www.acmicpc.net/problem/1152

 

1152번: 단어의 개수

첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한

www.acmicpc.net

 


 

 

 문제

 입력

 출력

 예제 입출력

 알고리즘 분류

  • 구현
  • 문자열

 


 

 문제 접근 과정

 

자바 string은 아직 익숙하지 않아서 좀 헤맸다. 내가 생각해낸 방법은

자바는 문자열을 수정할 수 없기에 char로 바꿔주고 for문으로 index를 str.length()까지 증가시켜

" "를 찾으면 count++를 해주려 했지만 오류가 떴다.

 

그래서 찾아낸 다음 방법이 자바에 있는 기능 StringTokenizer이다.

StringTokenizer를 이용하니 코드 줄도 짧아지고 손쉽게 해결할 수 있었다.

 


 

StringTokenizer

  • StringTokenizer

       StringTokenizer는 문자열을 지정된 구분자로 문자열을 자르는 데 사용된다.

       그렇게 자른 문자열을 Token이라 부른다.

       또 문자열을 분리하기 위해 사용되는 기준 문자를 구분자라고 한다.

 

  • StringTokenizer의 한계

      StirngTokenizer은 한 개의 구분자만 사용이 가능하다.

      여러개의 구분자를 사용하지 못한다.

 

 


 

 문제 풀이

 

import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        in.close();
        
        StringTokenizer st = new StringTokenizer(str," ");
        System.out.println(st.countTokens());
    }
}

 

 


 결과

 

 


 마무리

 

 

자바의 문자열이 까다로워 애를 먹었던 문제다. 하지만 StringTokenizer Class를 알고 나니 너무 쉽게 풀렸다.

 

 

 

 

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함