[백준] 10798번 : 세로읽기 (JAVA)

2026. 3. 14. 23:46·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

https://www.acmicpc.net/problem/10798


📌 문제 개요

5개의 문자열이 주어지고 이를 세로 방향으로 읽어 하나의 문자열로 출력하는 문제
각 문자열의 길이는 서로 다를 수 있으며, 해당 위치에 문자가 없는 경우에는 건너뛰어야 한다.

 

예를 들어 다음과 같은 문자열이 주어지면, 출력은 세로 방향으로 읽은 문자열이 된다.

ABCDE  
abc  
012345  
XYZ  
pq

 


📌 접근 방법

일반적으로 문자열을 처리할 때는 행 기준으로 순회하지만
이 문제는 세로 방향으로 읽어야 하므로 열 기준으로 순회해야 한다.

따라서 다음과 같은 방식으로 접근

  1. 문자열 5개를 배열에 저장한다.
  2. 가장 긴 문자열 길이만큼 반복문을 돌린다.
  3. 각 열에서 5개의 문자열을 확인한다.
  4. 해당 문자열 길이보다 열 인덱스가 작으면 문자를 출력한다.

이렇게 하면 존재하는 문자만 세로로 읽을 수 있다.


📌 핵심 아이디어

문자열 길이가 서로 다르기 때문에
단순히 charAt()을 사용하면 IndexOutOfBoundsException이 발생할 수 있다.

 

따라서 반드시 다음 조건을 체크

 

if (j < arr\[i\].length())

 

이 조건을 통해 해당 위치에 문자가 존재할 때만 출력


📌 전체 코드

package no_10798;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

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

        String[] arr = new String[5];

        for(int i = 0; i < 5; i++){
            arr[i] = br.readLine();
        }

        for(int j = 0; j < 15; j++){
            for(int i = 0; i < 5; i++){
                if(j < arr[i].length()){
                    System.out.print(arr[i].charAt(j));
                }
            }
        }
    }
}

📌 정리

이 문제의 핵심은 세로 탐색 방식이다.

일반적인 2차원 배열 탐색과 달리 열 → 행 순서로 반복문을 구성해야 한다.

 

또한 문자열 길이가 서로 다르기 때문에
문자가 존재하는지 length() 체크 후 출력해야 한다.

 

시간복잡도는 최대 5 × 15 정도이므로 매우 가볍게 해결할 수 있는 구현 문제

728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

[백준] 24313번 : 알고리즘 수업 - 점근적 표기 1 (JAVA)  (0) 2026.03.16
[백준] 2846번 : 오르막길 (JAVA)  (0) 2026.03.16
[백준] 11728번 : 배열 합치기 (JAVA)  (0) 2026.03.13
[백준] 2309번 : 일곱 난쟁이 (JAVA)  (0) 2026.03.12
[백준] 1417번 : 국회의원 선거 (JAVA)  (0) 2026.03.11
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • [백준] 24313번 : 알고리즘 수업 - 점근적 표기 1 (JAVA)
  • [백준] 2846번 : 오르막길 (JAVA)
  • [백준] 11728번 : 배열 합치기 (JAVA)
  • [백준] 2309번 : 일곱 난쟁이 (JAVA)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    정렬
    백준
    코딩테스트
    springboot
    실기
    level0
    level1
    피보나치
    정보처리기사 실기 기출문제
    시뮬레이션
    백엔드개발자
    기출문제
    프로그래머스
    정처기오답노트
    정처기실기
    완전탐색
    알고리즘
    정보처리기사
    dp
    구현
    자바
    정처기
    자료구조
    Level2
    java
    브루트포스
    배열
    수학
    문자열
    solved.ac
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
[백준] 10798번 : 세로읽기 (JAVA)
상단으로

티스토리툴바