문제 풀이

[백준] 10798번: 세로읽기 - JAVA(자바)

auyeol 2023. 8. 22. 14:57
728x90

 

문제

 

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

 

10798번: 세로읽기

총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’

www.acmicpc.net

 

 

문자열이 5줄로 주어진다. 문자열은 빈칸 없이 최대 15개의 글자로 이루어져있다.

 

주어진 문자열을 가로로 읽는 것이 아닌, 세로로 읽는데 공백이 있는 경우는 넘어간다.

 

여기서 세로로 읽은 글자를 출력하는 문제이다.

 

 

[입력]
AABCDD
afzz
09121
a8EWg6
P5h3kx

[출력]
Aa0aPAf985Bz1EhCz2W3D1gkD6x

 

 

------------------------------------------------------------------------------------------------------------------

 

풀이

 

5줄, 최대 15글자이므로 char 배열의 크기를 [5][15]로 선언하였다.

 

이후, 문자열을 입력받은 뒤, 가장 긴 문자열의 길이를 알아내게 하였다.

    > if(str.length()>max) max = str.length();

 

charAt()을 통해 입력받은 문자열을 char 배열에 저장한 이후, 2중 for문을 이용하여 결과를 출력하였다.

 

세로로 읽기 때문에 첫번째 for문은 max만큼 반복, 2번째 for문은 최대 5줄이므로 5번 반복

 

문제의 조건에서 공백은 넘어가기 때문에 if문을 통해 공백인 경우 넘어가도록 설정하였다.

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		char[][] c_arr = new char[5][15];
		int i,j;
		int max = 0;
		
		for(i=0;i<5;i++) {
			String str = sc.next();
			
			if(str.length()>max) 
				max = str.length();
			
			for(j=0;j<str.length();j++) {
				c_arr[i][j] = str.charAt(j);
			}
		}
		
		
		for(i=0;i<max;i++) {
			for(j=0;j<5;j++) {
				if(c_arr[j][i] == '\0') // 공백이 아니라 NULL이기 때문에 '\0'으로 
					continue;
				System.out.print(c_arr[j][i]);
			}
		}
		sc.close();
	}
}

 

728x90