Blog

백준 10798: 길이가 다른 문자열 세로로 읽기 (Java)

세로읽기는 다섯 줄을 char[5][15] 배열에 저장한 뒤 열 단위로 읽어서 풀었습니다. 가장 긴 줄의 길이는 max에 저장합니다.

읽을 때는 열을 먼저 고정하고 다섯 행을 차례로 방문합니다. 코드의 arr[j][i]에서 j가 행, i가 열입니다. 한 열을 다 읽으면 다음 열로 넘어가니까 글자가 세로 순서로 출력됩니다.

줄마다 길이가 달라 문자가 없는 칸도 생기는데 값을 넣지 않은 칸은 \0으로 남아 있으므로 건너뜁니다. 가장 긴 줄의 길이까지만 열을 순회하면 저장한 문자를 모두 읽을 수 있습니다.

Java
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        char[][] arr = new char[5][15];

        int max = 0;
        for (int i = 0; i < 5; i++) {
            String s = br.readLine();
            int lineLen = s.length();
            if (lineLen > max) {
                max = lineLen;
            }
            for (int j = 0; j < lineLen; j++) {
                arr[i][j] = s.charAt(j);
            }
        }

        for (int i = 0; i < max; i++) {
            for (int j = 0; j < 5; j++) {
                if (arr[j][i] == '\0') continue;
                bw.write(arr[j][i]);
            }
        }
        bw.flush();
    }
}