Dev Hyeri

◖코딩 테스트◗▬▬▬▬▬▬▬▬▬/백준

[백준] ✔️10798 세로읽기 (설명/코드/정답)

_hyeri 2024. 8. 17. 21:37

문제 링크 : https://www.acmicpc.net/problem/10798

 

 

1. 요구 사항 이해

시간, 메모리 제한 : 1초 / 256 MB

 

주어진 다섯 개의 단어를 세로로 읽어서 출력.

다섯 줄의 문자열, 각 줄은 최대 15개의 문자로 구성 (영문 대소문자 및 숫자).

각 위치에서 세로로 읽은 글자들을 공백 없이 출력.

 

 

 

 

2. 설계/검증 

복잡도

시간 복잡도  최악의 경우  공간 복잡도
O(1)   O(1)

 

 

 

 

 

3. 정상 코드

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        // 입력을 위한 객체 생성
        Scanner scan = new Scanner(System.in);

        // 5개의 단어를 저장할 배열 선언과 입력
        String[] words = new String[5];
        for (int i = 0; i < 5; i++) {
            words[i] = scan.nextLine();
            // 유효성 검사
            if (words[i].length() < 1 || words[i].length() > 15) {
                System.out.println("최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다");
                return;
            }
        }

        // 2차원 배열에 단어를 문자 단위로 저장
        char[][] table = new char[5][15];
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < words[i].length(); j++) {
                table[i][j] = words[i].charAt(j);
            }
        }

        // 세로로 읽어서 출력
        for (int j = 0; j < 15; j++) {
            for (int i = 0; i < 5; i++) {
                // 값이 null (\u0000)이 아니면 출력
                if (table[i][j] != '\u0000')
                    System.out.print(table[i][j]);
            }
        }
        
        scan.close();
    }
}