오늘은 백준 10798 세로읽기를 풀어보자!
아래 문제부터 보자!
https://www.acmicpc.net/problem/10798
10798번: 세로읽기
총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’
www.acmicpc.net
2차원 'char' 배열을 사용하여 문제를 풀어보자!
문제를 해석하자면,
1.각 문자열을 'char' 배열로 저장하고
2. 해당 배열의 행과 열을 바꾸어 출력
<고려사항>
1. 총 다섯줄을 입력
(0행 ~ 4행 or 1행 ~ 5행)
2. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다.
(0열 ~ 14 열 or 1열 ~ 15열)
아래에 하나씩 정리해보자!
우선, 입력받을 문자열을 저장할 2차원 char 배열을 선언하자!
위에서 정리한 고려사항 참고!!
char[][] charArray = new char[5][15];
이제 문자열을 2차원 char 배열에 저장하자!
for (int i = 0; i < 5; i++) {
String str = sc.next();
for (int j = 0; j < str.length(); j++) {
charArray[i][j] = str.charAt(j);
}
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 15; j++) {
if('\0' != charArray[i][j]){
System.out.print(charArray[i][j]);
}
}
System.out.println();
}
현재 이중 for문 중
아래에 있는 이중 for문이 정상적으로 출력되나 확인해 보자!
음... 정상으로 출력되는 걸 확인!
여기서 잠깐!!!
출력 이중 for문에 조건식을 추가하지 않을 경우,
문자열 배열에서 문자열의 길이가 배열의 크기보다 작을 때
나머지 공간에 null 문자('\0')가 채워지는 경우 고려!
if('\0' != charArray[i][j]){
System.out.print(charArray[i][j]);
}
조건식 미포함 input/output
다 합치자!
이 위 조건식을 사용해서
배열의 각 문자열을 세로로 출력하자!
Scanner
import java.util.Scanner;
public class LengthRead_10798 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char[][] charArray = new char[5][15];
for (int i = 0; i < 5; i++) {
String str = sc.next();
for (int j = 0; j < str.length(); j++) {
charArray[i][j] = str.charAt(j);
}
}
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 5; j++) {
if('\0' != charArray[j][i]){
System.out.print(charArray[j][i]);
}
}
}
}
}
다른 입력 방식을 사용해 보자!
BufferedReader
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class LengthRead_10798 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[][] charArray = new char[5][15];
for (int i = 0; i < 5; i++) {
String str = br.readLine();
for (int j = 0; j < str.length(); j++) {
charArray[i][j] = str.charAt(j);
}
}
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 5; j++) {
if('\0' != charArray[j][i]){
System.out.print(charArray[j][i]);
}
}
}
}
}
역시 'BufferedReader'를 사용하는 게 'Scanner'에 비해 약간 코드가 길어지긴 하지만
성능면에서는 더 효율적인 거 같다!
열심히 하자!!
'java' 카테고리의 다른 글
백준 2444번 문제 별 찍기 - 7(Java_자바) (1) | 2024.03.08 |
---|---|
백준 2563번 문제 색종이(Java_자바) (0) | 2024.03.07 |
백준 11720번 숫자의 합(Java_자바) (0) | 2024.03.04 |
백준 2566번 문제 최댓값(Java_자바) (0) | 2024.03.03 |
백준 2738번 문제 행렬 덧셈 (Java_자바) (0) | 2024.03.03 |