코딩테스트 & 문제 풀이
[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차원 배열의 행과 열이 풀다보니 살짝 헷갈리긴 했지만, 재밌게 잘 풀었습니다!