코딩테스트 & 문제 풀이

[Java]백준_10798 : 세로읽기

Hicecream 2025. 3. 26. 16:37

 

https://www.acmicpc.net/problem/10798

 

 

 

문제 분석

2차원 배열에 입력 받은 값을 넣어놓고 [0~4][0], [0~4][1] ...을 반복해서 출력하면 세로로 읽을 수 있다.

 

 

 

소스 코드 (⭕)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

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

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

        for (int i = 0; i < 5; i++) {
            String s = br.readLine();
            int len = s.length();
            int cnt = 0;
            for (int j = 0; j < 15; j++) {
                if (cnt >= len) {
                    arr[i][j] = '@';
                } else {
                    arr[i][j] = s.charAt(j);
                }
                cnt++;
            }
        }

        for (int j = 0; j < 15; j++) {
            for (int i = 0; i < 5; i++) {
                if (arr[i][j] != '@') {
                    sb.append(arr[i][j]);
                }
            }
        }
        System.out.print(sb);
    }
}

 

코드 분석

1. 입력은 무조건 5줄, 가로로 최대 15글자라고 제한이 있기 때문에 2차원 배열의 크기를 최대로 잡아준다.

 

2. 가로 한 줄의 문자열을 먼저 입력 받고, 이 문자열의 길이보다 초과되는 배열의 자리는 null 값이 입력 되는 것을 방지하기 위해 조건문을 설정하여 가비지 값 '@' 문자를 넣어준다.

 

3. 이제 이 배열을 세로로 읽어서 출력해야 되기 때문에 반대로 바깥 for문을 15번, 안쪽 for문을 5번 반복해주고, 해당 위치가 '@'이 아닌 경우에만 출력하면 된다.

 

 

end

2차원 배열의 행과 열이 풀다보니 살짝 헷갈리긴 했지만, 재밌게 잘 풀었습니다!