알아가기/Java

[Java] 공백 없는 연속된 숫자들 분리하여 배열에 입력받기 (split, toCharArray)

XEV 2023. 1. 12. 00:43

자바로 코딩 테스트 문제를 풀 때, 띄어쓰기로 공백이 형성된 여러 단일 숫자들의 데이터는 간단하게 배열로 작성이 가능하나, 공백 없이 한 번에 나열된 숫자들은 각각 띄워서 배열로 저장을 하려면 번거로운 작업이 필요하다.

 

 

split()

String[] strArr = sc.next().split("");

첫째, 임시 배열 strArr 에 .split("") 으로 분할하여 입력받는다.

 

numberArr[i][j] = Integer.parseInt(strArr[j]);

둘째, 입력받은 문자형 숫자를 하나씩 꺼내어 Integer.parseInt() 로 int 변환을 한다.

 

 

적용 코드

// using the split()

package input_numbers;

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        int[][] numberArr = new int[n][n];
        
        // split
        for (int i = 0; i < n; i++) {
            String[] strArr = sc.next().split("");                      // storing numbers as characters using the split().
            for (int j = 0; j < n; j++) {
                numberArr[i][j] = Integer.parseInt(strArr[j]);
            }
            System.out.println(Arrays.toString(numberArr[i]));          // print output.
        }

        sc.close();
    }

}


// input
//5
//40241
//13512
//11113
//04054
//14431

// print output
//[4, 0, 2, 4, 1]
//[1, 3, 5, 1, 2]
//[1, 1, 1, 1, 3]
//[0, 4, 0, 5, 4]
//[1, 4, 4, 3, 1]

 

 

 

 

 

toCharArray()

char[] chrArr = sc.next().toCharArray();

첫째, 임시 chrArr 에 .toCharArray() 을 사용하여 char 형식으로 분할하여 입력받는다.

 

numberArr[i][j] = chrArr[j] - '0';

둘째, char 형식의 사칙연산은 유니코드 숫자의 계산을 반환한다.

따라서 chrArr[j] 에 따르는 유니코드 숫자와 '0' 을 의미하는 유니코드 숫자 65 의 뺄셈이 된 숫자가 numberArr[i][j] 에 들어간다.

 

 

적용 코드

// using the toCharArray()

package input_numbers;

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        int[][] numberArr = new int[n][n];
        
        // toCharArray
        for (int i = 0; i < n; i++) {
            char[] strArr = sc.next().toCharArray();                      // storing numbers as characters using the toCharArray().
            for (int j = 0; j < n; j++) {
                numberArr[i][j] = strArr[j] - '0';
            }
            System.out.println(Arrays.toString(numberArr[i]));          // print output.
        }

        sc.close();
    }

}


// input
//5
//40241
//13512
//11113
//04054
//14431

// print output
//[4, 0, 2, 4, 1]
//[1, 3, 5, 1, 2]
//[1, 1, 1, 1, 3]
//[0, 4, 0, 5, 4]
//[1, 4, 4, 3, 1]