

문자열을 여러 개 받은 다음, 그걸 세로로 읽도록 하는 문제이다.
변수 선언의 기본 초기화 값을 잘 숙지하고 있으면 한 층 난이도가 쉬워진다.
보통은 지역 변수로써 변수를 선언 할 경우 초기화되지 않는다.
(메소드 안에서 선언 한 변수)
class myClass{
char A;
void myMethod(){
char B;
System.out.println(A); // 인스턴스 변수. '\u0000'로 초기화. 유니코드 0번.
System.out.println(B); // 컴파일 에러!! 지역 변수. 초기화 안됨.
}
}
하지만 참조형 변수를 선언하고, 특정 주소를 참조하도록 객체를 만들면, 지역 변수여도 초기화가 된다.
class myClass{
void myMethod(){
char[] B = new char[5];
System.out.println(B[0]); // '\u0000' 출력.
}
즉 해당 문제에서, 배열 선언 중 입력되지 않은 칸을 위해
조건문과 반복문을 따로 만들어 null값을 집어넣지 않아도 된다는 소리이다.
위 내용을 토대로 설계한 코드는 아래와 같다.
import java.util.*;
import java.io.*;
class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
char[][] chArr = new char[15][5];
for(int i=0; i<5; i++){
String s = br.readLine();
for(int j=0; j<s.length(); j++){
chArr[j][i] = s.charAt(j);
}
// s.length가 15보다 적어도 상관x
// 이미 모든 칸은 자동으로 '\u0000'으로 초기화되어 있다.
}
for(int i=0; i<15; i++){
for(int j=0; j<5; j++){
if(chArr[i][j] != 0){ // char이 자동으로 정수 변환되어 판별한다.
bw.write(chArr[i][j]);
}
}
}
bw.flush();
br.close();
bw.close();
}
}
맞았습니다!!