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보다 작아야 함