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차원 배열의 행과 열이 풀다보니 살짝 헷갈리긴 했지만, 재밌게 잘 풀었습니다!
'코딩테스트 & 문제 풀이' 카테고리의 다른 글
[Java]백준_2720 : 세탁소 사장 동혁 (0) | 2025.03.31 |
---|---|
[Java]백준_15439 : 베라의 패션 (0) | 2025.03.31 |
[Java]백준_14215 : 세 막대 (1) | 2025.03.25 |
[C]백준_5622 : 다이얼 (0) | 2024.04.08 |
[C]백준_8979 : 올림픽 (0) | 2024.04.07 |