반응형
5줄을 입력받아 세로로 읽어 출력하는 문제.
abc
de
f
gh
ijk
이라면
adfgibehjck 가 되겠다.
각 문자들은 줄 단위로 입력되므로 nextLine()함수를 통해 입력받아 이를 이차원 배열에 저장한다.
String[] ary = new String[5];
char[][] result = new char[15][5];
for (int i = 0; i < 5; i++) {
ary[i] = sc.nextLine();
for (int j = 0; j < ary[i].length(); j++) {
result[j][i] = ary[i].charAt(j);
}
}
이때 이차원배열은 15행 5열 으로 한다. (입력받은 문자의 최대가 5행 15열이기 때문)
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(result[i][j]);
}
}
이후 결과를 담은 이차원 배열 result를 차례로 출력하면 완성....
인듯 했으나, 결과는 실패.
이유를 확인해본 결과 char배열에는 초기값으로 '\0'이라는 문자가 들어간다고 한다.
(참고 : https://www.delftstack.com/ko/howto/java/initialize-char-in-java/)
반응형
이 때문에 char배열을 빈 값으로 초기화 시켜주거나 조건을 추가해주어야 한다.
if (result[i][j] != '\0')
System.out.print(result[i][j]);
조건을 추가해 주는 방향으로 코드를 작성한 후 제출 결과는 ?
성공.
이제 전체 코드를 보면 다음과 같다.
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String[] ary = new String[5];
char[][] result = new char[15][5];
for (int i = 0; i < 5; i++) {
ary[i] = sc.nextLine();
for (int j = 0; j < ary[i].length(); j++) {
result[j][i] = ary[i].charAt(j);
}
}
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 5; j++) {
if (result[i][j] != '\0')
System.out.print(result[i][j]);
}
}
sc.close();
}
}
반응형
'Java > 백준알고리즘' 카테고리의 다른 글
[Java] 백준알고리즘 #2745 진법 변환 (0) | 2023.10.05 |
---|---|
[Java] 백준알고리즘 #2563 색종이 (1) | 2023.10.04 |
[Java] 백준알고리즘 #2566 최댓값 (0) | 2023.10.04 |
[Java] 백준알고리즘 #1316 그룹 단어 체커 (0) | 2023.10.04 |
[Java] 백준알고리즘 #25206 너의 평점은 (1) | 2023.10.03 |