본문 바로가기
백준 문제 풀이/2차원 배열

(#10798 Java) 세로읽기

by _비니_ 2024. 2. 24.

 

문제 이해

 

총 다섯 줄을 입력받고, 한 줄에는 최대 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