백준 10798번 구현 문제를 풀어보았다.
코테를 준비할 때 꼭 열심히 풀어봐야 할 구현 문제를 풀기 시작했다.
로직은 정말 간단한데 내가 개뻘짓을 해서 30분이나 걸렸다 ㅎㅎ 삽질은 언제나 유익해^-^
사실 저 메소드는 위험하지 않다. 모르고 쓰는 내가 위험한 것 ^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();
}
}
오늘 배운 것
잘 모르면 쓰지말라 ^^... 아님 알아보는 노오력이라도 하시든가 ㅎ..