[Java] 문자열을 정수 배열로 변환하기

yammmie·2024년 9월 15일

Java

목록 보기
7/9
post-thumbnail

상황

백준 알고리즘 문제 10807을 풀면서 문자열을 정수 배열로 변환하는 방법을 사용했는데, 이 방법에 대한 좋은 글을 찾아 포스팅해보려고 한다



문자열

  • 자바의 문자열은 char 배열에서 내부적으로 지원되는 객체
  • 배열은 불변이고 문자열 또한 문자를 보관하는 예외적인 배열의 한 유형이므로 문자열도 불변

정수 배열

  • 배열은 같은 타입인 변수의 조합
  • 정수 배열 또한 정수의 컬렉션

string.split()

참고한 포스팅에서는 string.replaceAll() 메소드와 string.split() 메소드 두 가지 방법이 있다고 했다
하지만 첫 번째 방법은 같이 입력된 []를 지우기 위해 replaceAll() 메소드를 사용하는 것일 뿐 실질적으로 변환시킬 때는 split() 메소드를 사용했기 때문에 해당 방법만 포스팅할 것

  • string.split() 메소드는 문자열을 다양한 하위 문자열로 분할하는 데 사용됨
  • 해당 하위 문자열은 Integer.parseInt() 메소드를 사용해 정수로 변환되고, 해당 정수 값이 int 배열에 저장됨

// Java Program to Convert String to Integer Array
// Using string.split() method
 
// Importing input output and utility classes
import java.io.*;
 
public class GFG {
    // Function for conversion
    static int[] method(String str)
    {
 
        String[] splitArray = str.split(" ");
        int[] array = new int[splitArray.length];
 
        // parsing the String argument as a signed decimal
        // integer object and storing that integer into the
        // array
        for (int i = 0; i < splitArray.length; i++) {
            array[i] = Integer.parseInt(splitArray[i]);
        }
        return array;
    }
 
    // main method
    public static void main(String[] args)
    {
        // Bufferedreader declaration
        BufferedReader br = new BufferedReader(
            new InputStreamReader(System.in));
 
        // string declaration
        String str = "1 23 456 7890";
        int i;
 
        // declaring the variable & calling the method with
        // passing string as an argument
        int[] array = method(str);
 
        // printing the string
        System.out.print("\nString : " + str);
 
        // printing the Integer array
        System.out.print("\nInteger array : [");
        for (i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
 
        System.out.print("]");
    }
}
  • 시간 복잡도: O(n)
  • 보조 공간: O(n)



스트림을 사용하는 방법

  • Stream 요소를 int형으로 변환해 IntStream으로 리턴하는 mapToInt()를 사용
String str = br.readLine();
String strs[] = str.split(" ");
int nums[] = Arrays.stream(strs).mapToInt(Integer::parseInt).toArray();

System.out.println(Arrays.toString(nums));

참고

https://www.geeksforgeeks.org/java-program-to-convert-string-to-integer-array/

0개의 댓글