문제 이해
총 다섯 줄을 입력받고, 한 줄에는 최대 15개의 문자를 입력받을 수 있다.
이를 세로로 읽어 공백없이 출력해주면 된다. 만약 중간에 빈 문자열이 존재하면, 이는 출력하지 않고 다음 문자를 이어서 출력하면 된다.
문제 해결
우선 5행의 최대 15개의 열을 가진 2차원 배열을 선언해준다.
char[][] str = new char[5][15];
입력 받은 문자열들을 배열에 저장하기 위해 스캐너로 입력받은 문자들을 저자해준다.
이 때 밖의 for문, 즉 행을 뜻하는 반복문은 5번 반복해주면 되고,
안쪽의 for문은 한 줄에 입력받은 문자열의 길이만큼 반복하며 입력받으면 된다.
Scanner in = new Scanner(System.in);
String input = "";
for (int i = 0; i < 5; i++) { //행을 의미. 즉 5번 반복
input = in.next();
for (int j = 0; j < input.length(); j++) { //열을 의미. 즉 한 행의 문자열 길이만큼 반복
str[i][j] = input.charAt(j);
}
}
그리고 이를 세로로 읽기 위해 행과 열을 바꾸어 반복문을 실행해주면 된다.
이 때 만약 빈 문자열을 만나게 되면 출력하지 않고 다시 반복문으로 올라갈 수 있도록 continue를 사용해준다.
// 세로 읽기
for (int i = 0; i < 15; i++) { //한 행에 최대 15개
for (int j = 0; j < 5; j++) { //총 5행
if (str[j][i] == '\0') //빈 문자열이면 출력 X
continue;
System.out.print(str[j][i]);
}
}
최종 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 5행에 최대 15열 2차원 배열
char[][] str = new char[5][15];
String input = "";
for (int i = 0; i < 5; i++) { //행을 의미. 즉 5번 반복
input = in.next();
for(int j = 0; j < input.length; j++) { //열을 의미. 즉 한 행의 문자열 길이만큼 반복
str[i][j] = input.charAt(j);
}
}
//세로 읽기
for(int i = 0; i < 15; i++) {
for(int j = 0; j < 5; j++) {
if(str[j][i] == '\0') //빈 문자열이면 출력 X
continue;
System.out.print(str[j][i]);
}
}
}
}
반응형
'백준 문제 풀이 > 2차원 배열' 카테고리의 다른 글
(#2563 Java) 색종이 (0) | 2024.02.24 |
---|---|
(#2566 Java) 최댓값 (0) | 2024.02.23 |
(#2738 Java) 행렬 덧셈 (1) | 2024.02.23 |