[백준] 10798번 - 세로 읽기 (java)

팥빵·2025년 5월 30일

Baekjoon

목록 보기
22/49

>>문제 바로가기<<

문자열을 여러 개 받은 다음, 그걸 세로로 읽도록 하는 문제이다.

변수 선언의 기본 초기화 값을 잘 숙지하고 있으면 한 층 난이도가 쉬워진다.


변수의 초기화 규칙

보통은 지역 변수로써 변수를 선언 할 경우 초기화되지 않는다.
(메소드 안에서 선언 한 변수)

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();    
    }
}

맞았습니다!!

profile
반갑습니다

0개의 댓글