백준 10798번( 자바 )

Flash·2022년 1월 7일
0

BOJ-Algorithm

목록 보기
16/51
post-thumbnail

구현 문제

백준 10798번 구현 문제를 풀어보았다.
코테를 준비할 때 꼭 열심히 풀어봐야 할 구현 문제를 풀기 시작했다.

로직은 정말 간단한데 내가 개뻘짓을 해서 30분이나 걸렸다 ㅎㅎ 삽질은 언제나 유익해^-^


str.charToArray() 는 위험해

사실 저 메소드는 위험하지 않다. 모르고 쓰는 내가 위험한 것 ^0^
배열 크기를 ary[5][15] 로 정해주고 나서 입력을 한 줄씩 받을 때 ary의 각 row마다 charToArray 메소드를 이용해 배열을 집어넣어줬다.
이 때 문제가 발생한다. 난 이미 row 사이즈를 5, col 사이즈를 15로 정해줬지만 charToArray 메소드를 사용하면 내가 받은 입력의 길이만큼으로 해당 row의 배열이 다시 초기화되는 것이다.

즉, 2번째 줄에서 6글자짜리 입력을 받게 되면 ary[1]의 사이즈는 이미 내가 정해준 15가 아닌 6이 되어버리는 것이다. 이것 때문에 계속 ArrayIndexOutOfBounds 에러를 마주하다가 나중에야 이 메소드가 문제겠구나 라는 것을 인지하고 바꿔줬다.

아래는 내가 제출한 코드다.

import java.io.*;

public class boj10798 {
    public static void main(String args[]) throws IOException {
        BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(System.out));

        char[][] ary = new char[6][16];

        for(int i=0; i<5; i++){ // 입력 받자
            String input = bfr.readLine();
            int length = input.length();
            for(int j=0; j<15; j++){
                if(j<length)
                    ary[i][j] = input.charAt(j);
                else
                    ary[i][j] = 0;
            }
        }

        for(int col=0; col<15; col++){
            for(int row=0; row<5; row++){
                if(ary[row][col]==0) continue;
                bfw.write(ary[row][col]);
            }
        }
        bfw.close();
    }
}

오늘 배운 것

잘 모르면 쓰지말라 ^^... 아님 알아보는 노오력이라도 하시든가 ㅎ..

profile
개발 빼고 다 하는 개발자

0개의 댓글