Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 세로읽기 (10798) (자바/Java) 본문

알고리즘문제/백준 문제(Java)

[백준] - 세로읽기 (10798) (자바/Java)

luke-king 2024. 3. 22. 19:16

 

 

 

 

 

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

 

10798번: 세로읽기

총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’

www.acmicpc.net

 

 

 

 

 

문제.


 

 

 

 

풀이.


 

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        char[][] str = new char[5][15];

        for (int i = 0; i < str.length; i++) {
            String input = sc.next();
            for (int j = 0; j < input.length(); j++) {
                str[i][j] = input.charAt(j);
            }
        }

        for (int i = 0; i < 15; i++) {
            for (int j = 0; j < 5; j++) {
                if (str[j][i] == '\0') {
                    continue;
                }
                System.out.print(str[j][i]);
            }
        }
    }
}

 

이번문제는 세로읽기 문제이다. 바로 풀이를 해보겠다.

 

1. 문제 지문중 총 5줄의 과 15개의 최대길이 글자로 이루어 진다는걸 보면 2차원 배열을 사용한다는걸 알수있다.

 

2. 2중for문을 사용해 첫번째 for문에서 입력값을 입력해주고 두번째 for문에서는 입력한 값을 하나씩 출력한다.

 

3. 이제 세로로 출력하는 2중for문을 사용한다. 세로로 출력하기 위해서는 처음 저장해둔 [i] [j]배열에 반대로 해줘야 한다

쉽게 말하자면

 

[0][0] =A  [0][1] = A [0][2] = B [0][3] = C [0][4] = D [0][5]= D

[1][0] = a  [1][1] = f [1][2] = z [1][3] = z

[2][0] = 0  [2][1] = 9 [2][2] = 1 [2][3] = 2 [2][4] = 1

[3][0] = a [3][1] = 8 [3][2] = E [3][3] = W [3][4] = g [3][5] = 6

[4][0] = P [4][1] = 5 [4][2] = h [4][3] = 3 [4][4] = k [4][5] = x 

 

이렇게 저장 되어있다면.

 

세로로 뽑는 for문에 i < 15 , j < 5 에 [j][i] 이면 행만 바뀌기 때문에 0,1,2,3,4 행의 0번째 값들만 나오게 된다. 그렇다면

[0][0] = A  [1][0] = a [2][0] = 0 [3][0] = a [4][0] = P  

[0][1] = A  [1][1] = f [2][1] = g [3][1] = 8 [4][1] = 5

......

결과: Aa0aPAfg85..... 으로 출력되는 것이다.