첫번째 풀이
StringBuilder sb = new StringBuilder();
Character[][] arr = null;
for (int i = 0; i < 5; i++) {
String s = sc.next();
if (arr == null) {
arr = new Character[5][s.length()];
}
for (int j = 0; j < s.length(); j++) {
arr[i][j] = s.charAt(j);
}
}
for (int i = 0; i < arr[0].length; i++) {
for (int j = 0; j < arr.length; j++) {
if (arr[j][i] != null) {
sb.append(arr[j][i]);
}
}
}
System.out.println(sb);
이풀이는 ArrayIndexOfBound가 난다
내가 간과한 점은 각 줄에 위치한 데이터들의 길이가 전부 다를수가 있다는 점이었다 예를 들면
내 코드의 경우에는 초기화가 바로 되는 코드인데, 첫번째 줄에서 초기화가 되는 경우이다
하지만이런경우에는 데이터를 초기화하는데 문제가 있다
111
1111
111
1111
11
그래서 char 배열 초기화를 처음부터 최대로 잡아주는 게 좋다 이렇게 하면 for 문에서 접근할때도 오류가 나지 않는다
// 초기배열은 최대로 생성해주어야 한다
// 배열의 크기가 줄별로 다르기 때문!
Character[][] arr = new Character[5][15];
int maxLength = 0;
for (int i = 0; i < 5; i++) {
..
// 가장 큰 배열의 크기로 잡아주고 나중에 출력할때 필요하다
maxLength = Math.max(maxLength, s.length());
..
}
for (int i = 0; i < maxLength; i++) {
for (int j = 0; j < arr.length; j++) {
if (arr[j][i] != null) {
sb.append(arr[j][i]);
}
}
}