Java/백준알고리즘

[Java] 백준알고리즘 #10798 세로읽기

Sehyeok20 2023. 10. 4. 19:54
반응형

백준알고리즘 #10798 세로읽기
백준알고리즘 #10798 세로읽기

5줄을 입력받아 세로로 읽어 출력하는 문제.

abc

de

f

gh

ijk

이라면

adfgibehjck 가 되겠다.

 

각 문자들은 줄 단위로 입력되므로 nextLine()함수를 통해 입력받아 이를 이차원 배열에 저장한다.

String[] ary = new String[5];
char[][] result = new char[15][5];
for (int i = 0; i < 5; i++) {
    ary[i] = sc.nextLine();
    for (int j = 0; j < ary[i].length(); j++) {
        result[j][i] = ary[i].charAt(j);
    }
}

이때 이차원배열은 15행 5열 으로 한다. (입력받은 문자의 최대가 5행 15열이기 때문)

 

for (int i = 0; i < 15; i++) {
    for (int j = 0; j < 5; j++) {
        System.out.print(result[i][j]);
    }
}

이후 결과를 담은 이차원 배열 result를 차례로 출력하면 완성....

인듯 했으나, 결과는 실패.

 

 

이유를 확인해본 결과 char배열에는 초기값으로 '\0'이라는 문자가 들어간다고 한다.

(참고 : https://www.delftstack.com/ko/howto/java/initialize-char-in-java/)

 

Java에서 Char 초기화

이 기사에서는 Java에서 char를 초기화하는 방법을 소개합니다.

www.delftstack.com

 

반응형

 

 

 

이 때문에 char배열을 빈 값으로 초기화 시켜주거나 조건을 추가해주어야 한다.

 

if (result[i][j] != '\0')
    System.out.print(result[i][j]);

 

조건을 추가해 주는 방향으로 코드를 작성한 후 제출 결과는 ?

 

 

성공.

 

이제 전체 코드를 보면 다음과 같다.

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        String[] ary = new String[5];
        char[][] result = new char[15][5];
        for (int i = 0; i < 5; i++) {
            ary[i] = sc.nextLine();
            for (int j = 0; j < ary[i].length(); j++) {
                result[j][i] = ary[i].charAt(j);
            }
        }
        for (int i = 0; i < 15; i++) {
            for (int j = 0; j < 5; j++) {
                if (result[i][j] != '\0')
                    System.out.print(result[i][j]);
            }
        }
        sc.close();
    }
}

 

반응형