[Java] 문자열 자르기 (StringTokenizer(), split(), substring())

조진우·2022년 10월 29일
0

Java

목록 보기
2/6
post-thumbnail

💡 방법 1. StringTokenizer


StringTokenizer는 문자열을 우리가 원하는 구분자로 쪼개주는 클래스이다. 그렇게 쪼개진 문자열을 'Token'이라고 한다. split()와 비교해서 성능이 좋기에 알고리즘에서 사용하면 좋다.


int countTokens() : 남아잇는 token의 개수를 반환한다. (현재 남아있는 token의 개수)

String nextToken() : 다음 token을 반환한다.

boolean hasMoreTokens() : 리턴할 토큰이 있으면 true / 없으면 false



public class BJ15552_SpeedAplusB {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int n = Integer.parseInt(br.readLine());


        for (int i = 0; i < n; i++) {
            String str = br.readLine();
            StringTokenizer st = new StringTokenizer(str, " ");
            sb.append(Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken())).append("\n");
        }
        System.out.println(sb);
    }
}



💡 방법 2. split


입력받은 정규표현식 또는 특정 문자를 기준으로 문자열을 나누어 배열(array)로 반환

public class BJ1008_AB {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] str = br.readLine().split(" ");

        Double a = Double.parseDouble(str[0]);
        Double b = Double.parseDouble(str[1]);

        System.out.println(a / b);
    }
}



💡 방법 3. substring


String으로 구성된 문자열은 여러 개의 char로 구성한 형태이다. 특정 index를 기준으로 문자열을 자르는 방법이 substring() 메소드이다. subString은 특정 인덱스의 숫자를 기준으로 문자열을 자르기 때문에 indexOf() 함수도 같이 알아야 한다.


substring(int index) : index부터 문자열 끝까지 문자열을 리턴(String)

substring(int beginindex, int endindex) : beginindex 부터 endindex 전까지 문자열을 리턴



public class BJ15552_SpeedAplusB {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < n; i++) {
            String str = br.readLine();
            int target = str.indexOf(" ");
            int result = Integer.parseInt(str.substring(0, target)) + Integer.parseInt(str.substring(target + 1));
            sb.append(result + "\n");
        }
        br.close();
        System.out.println(sb);
    }
}



참고자료


[백준] 10172번 : 개 - JAVA [자바]

profile
The Top of Iceblog

0개의 댓글