백준 10798: 길이가 다른 문자열 세로로 읽기 (Java)
세로읽기는 다섯 줄을 char[5][15] 배열에 저장한 뒤 열 단위로 읽어서 풀었습니다. 가장 긴 줄의 길이는 max에 저장합니다.
읽을 때는 열을 먼저 고정하고 다섯 행을 차례로 방문합니다. 코드의 arr[j][i]에서 j가 행, i가 열입니다. 한 열을 다 읽으면 다음 열로 넘어가니까 글자가 세로 순서로 출력됩니다.
줄마다 길이가 달라 문자가 없는 칸도 생기는데 값을 넣지 않은 칸은 \0으로 남아 있으므로 건너뜁니다. 가장 긴 줄의 길이까지만 열을 순회하면 저장한 문자를 모두 읽을 수 있습니다.
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();
}
}