Algorithm

[백준] 브1 > 세로읽기 10798번 - JAVA

흰색기린 2024. 10. 23. 20:48
알고리즘 풀이 방법입니다.
문제(Problem) -> 생각(Think) -> 해결책(Solution) -> 리뷰(Review) 를 통해서 정리해서 작성합니다.
Problem📄

 

※ 문제는 제목과 동일합니다.


Think🤔

 

A A B C D D
a f z z 
0 9 1 2 1
a 8 E W g 6
P 5 h 3 k x

총 다섯줄이 주어진다.
한 줄의 단어 최대 15개 까지 가능
새로로 읽는 것 출력(공백은 건너뛴다.)
Aa0aPAf985Bz1EhCz2W3D1gkD6X 

 

import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;

class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] list = new String[5];
		int maxNum = 0;
		
		for(int i=0; i<5; i++){
			list[i] = br.readLine();
			maxNum = Math.max(maxNum, list[i].length());
		}
		String answer = "";
		for(int i=0; i<maxNum; i++){
			for(int j=0; j<5; j++){
				if(list[j].charAt(i) != ' '){
					answer+=list[j].charAt(i);
				}
			}
		}
		
		System.out.print(answer);
    }
}

 

이렇게 제출했으나 

if(list[j].charAt(i) != ' '){
	answer+=list[j].charAt(i);
}

 

charAt(i)를 가져오지 못하고 ' '이 값과 비교도 못함.
다른 식으로 접근해야되는데 해당 번째를 할때 length를 비교해서 런타임에러가 안나게 변경한다.

abc 인데

abc" " 마지막 글자를 읽을려고해서 오류가 남


Solution✍

 

import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;

class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] list = new String[5];
		int maxNum = 0;
		
		for(int i=0; i<5; i++){
			list[i] = br.readLine();
			maxNum = Math.max(maxNum, list[i].length());
		}
		String answer = "";
		for(int i=0; i<maxNum; i++){
			for(int j=0; j<5; j++){
				if(i < list[j].length()){
					answer+=list[j].charAt(i);
				}
			}
		}
		
		System.out.print(answer);
    }
}

Review🤩

 

지금 검사하는 글자의 인덱스가 length보다 작아야 함