[Java] 백준 10798번: 세로읽기

hansung's·2024년 2월 21일
0

문제 url:
세로읽기

문제:

🤔 문제 알아가기

  • 한 줄당 1~15개의 단어로 이루어져있으며 이렇게 총 5줄 입력이 주어진다.
  • 그 후 출력을 아래로 간 후 오른쪽으로 이동 총 5번 반복해서 한줄로 출력한다.
  • 여기서 우리는 [5][15] 크기의 배열이 필요하다는 것을 알 수 있다.
  • 또한 한줄 출력을 하기 위해 StringBuilder 클래스를 이용해 각 글자를 더 한 문자열로 출력하고자 한다.
  • 출력 시 존재하지 않는 곳에는 뛰어넘고 글자가 존재하는 인덱스끼리만 붙여서 한다.

😎 준비하기

1.BufferedReader를 이용해 입력을 받는다.
2.[5][15] 크기의 배열 생성
3.총 5번 반복을 하며 글자를 배열에다가 초기화 시킨다.
4.출력시, 인덱스에 값이 존재하지 않을 경우를 제외한 나머지
StringBuilder에 append 시키며 문자를 더해간다.

5.StringBuilder를 출력한다.

🐱‍👤 실제 코드

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        //출력 시 사용하기 위한 StinrgBuilder
        StringBuilder sbd = new StringBuilder();

        //한 줄에 1개~15개의 문자를 입력받으며 총 5줄을 입력받기 위한 2차원 배열 생성
        char arr[][] = new char[5][15];

        // 5줄을 반복하기 위한 반복문
        for (int i = 0; i < 5; i++) {
            String word = br.readLine();

            // 문자열 길이만큼 배열에 넣기 위한 반복문
            for (int j = 0; j < word.length(); j++) {
                arr[i][j] = word.charAt(j);
            }

        }

        //글자를 StringBuilder에 append하기 위한 반복문
        for (int j = 0; j < 15; j++) {
            for (int i = 0; i < 5; i++) {
                if(arr[i][j] != (char)0) {
                    sbd.append(arr[i][j]);

                }
            }
        }
        System.out.println(sbd);

    }

}

🤢 트러블 슈팅

코드를 짜는데 어려움은 없었다. 하지만 마지막 출력부분에서 인덱스 값이 공백인 부분에서 처리가 어려워지면서 고민을 하였다.

처음에는 arr[i][j] != (char)0) 이 부분을 arr[i][j] != ' ' 이런식으로 하니 공백도 같이 포함되어 출력되었다.
그래서 공백을 제거한 상태로 하려고 replace문을 사용해보려고 했는데, 해당 부분에서 처리하는게 더 맞는 방법이라고 생각하여, 아스키 코드를 조금 더 분석하였고
space 아스키 코드인 32를 알게되었다. 그래서 arr[i][j] != (char)32)를 해봤는데, 이 역시 마찬가지로 공백을 포함해서 출력되는 것이다..
그러던 중 space는 값이 없어보일 뿐 결국 값이 존재하는거고 현재 상태는 null임을 생각하고, (char)0이 아닌 의문문으로 변경하니 해결할 수 있었다.

※char 배열의 초기 값은 '\0' 이라고 한다. 그래서 (char)32가 아닌 \0을 해도 무방하다.

삽질하는 경험도 나는 중요하다고 생각한다. 
삽질도 여러번 하면 근육이 생겨서 다른 삽질을 할 때 도움이 될 것이기 때문이다.
profile
ABAPER를 꿈꾸는 개발자

0개의 댓글