상세 컨텐츠

본문 제목

1152. 단어의 개수

Algorithm

by aeongiii 2024. 11. 15. 11:29

본문


1. 문제 분석
    1) 영어 대소문자 + 공백으로 이루어진 문자열이 주어진다.
    2) 단어는 공백으로 구분된다.
    3) 단어의 개수를 세서 출력한다.
    4) 문자열의 처음과 끝에 공백이 들어갈 수 있다.

2. 제약 조건
    문자열의 길이 <= 1,000,000

3. 의사결정
    1) 문자열 S를 입력받는다.
    2) StringTokenizer를 사용해 공백 기준으로 분리한다.
    4) 토큰 길이를 출력한다.

4. 문제 해결
    1) countTokens() : StringTokenizer가 가지고 있는 토큰의 개수 반환
    2) split()은 무조건 하나 이상의 배열을 출력하기 때문에 문자열에 공백만 있을 경우 1을 반환하지만
       StringTokenizer의 경우 0을 반환하기 때문에 더 적절하다.

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

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        System.out.println(st.countTokens());

    }
}

 

더 줄여봤다. 가독성은 조금 떨어지지만 한줄로도 가능했다.

 

 

import java.io.*;

public class Main {

    public static void main(String[] args) throws IOException {
        System.out.println(new StringTokenizer(new BufferedReader(new InputStreamReader(System.in)).readLine()).countTokens());

    }
}


이 문제도 10개월 전에 풀었던 것과 비교하면 메모리와 시간이 반 이상 줄었다.

 

오늘 풀이한 방법 두 가지 코드 간의 메모리, 시간 차이는 별로 없었다.

'Algorithm' 카테고리의 다른 글

20291. 파일 정리  (2) 2024.11.15
2908. 상수  (0) 2024.11.15
26041. 비슷한 전화번호 표시  (1) 2024.11.15
2675. 문자열 반복  (0) 2024.11.15
메모이제이션(Memoization)  (0) 2024.11.14

관련글 더보기