본문 바로가기
백준

[백준] 알고리즘 분류(문자열,JAVA)10798번, 세로읽기

by 열정적인 이찬형 2022. 9. 15.

문제 링크

 

10798번: 세로읽기

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

www.acmicpc.net


주의사항

  • JAVA를 사용하여 프로그램을 사용하였습니다.
  • 백준에서 코드를 작성하였을 때 아래 형태에서 Main에서 결과가 출력되어야 합니다.
public class Main{ 	
	public static void main(String[] args){
    }
}

문제 설명


접근 방법

이 문제에 핵심

 

1. 5개 단어가 주어졌을 때 새로로 읽어서 단어를 만듭니다.

2. 세로로 만든 문자열들을 모두 연결하여 하나의 문자열로 만들고 결과로 출력합니다.

3. 단어의 길이는 동일하지 않으며 첫 번째와 마지막 글자는 공백으로 입력되지 않습니다.

 

알고리즘 진행 순서.

 

1. 입력되는 단어들을 저장합니다.

 

2. 각 단어에 글자에 대한 열 위치에 따라 문자열을 만듭니다.

 

3. 만들어진 문자열을 순서대로 연결하여 결과로 출력합니다.

 

예제입력 2.

 

1. 입력되는 단어들을 저장합니다.

 

AABCDD

 

afzz

 

09121

 

a8EWg6

 

P5h3kx

 

2. 각 단어에 글자에 대한 열 위치에 따라 문자열을 만듭니다.

A A B C D D
a f z z    
0 9 1 2 1  
a 8 E W g 6
P 5 h 3 k x

AABCDD

 

1열 문자열 : A

2열 문자열 : A

3열 문자열 : B

4열 문자열 : C

5열 문자열 : D

6열 문자열 : D

 

afzz

 

1열 문자열 : Aa

2열 문자열 : Af

3열 문자열 : Bz

4열 문자열 : Cz

5열 문자열 : D

6열 문자열 : D

 

09121

 

1열 문자열 : Aa0

2열 문자열 : Af9

3열 문자열 : Bz1

4열 문자열 : Cz2

5열 문자열 : D1

6열 문자열 : D

 

a8EWg6

 

1열 문자열 : Aa0a

2열 문자열 : Af98

3열 문자열 : Bz1E

4열 문자열 : Cz2W

5열 문자열 : D1g

6열 문자열 : D6

 

P5h3kx

 

1열 문자열 : Aa0aP

2열 문자열 : Af985

3열 문자열 : Bz1Eh

4열 문자열 : Cz2W3

5열 문자열 : D1gk

6열 문자열 : D6x

 

3. 만들어진 문자열을 순서대로 연결하여 결과로 출력합니다.

 

1열 문자열 : Aa0aP

2열 문자열 : Af985

3열 문자열 : Bz1Eh

4열 문자열 : Cz2W3

5열 문자열 : D1gk

6열 문자열 : D6x

 

= "Aa0aPAf985Bz1EhCz2W3D1gkD6x"을 결과로 출력합니다.

 

 

  • BufferedReader를 사용하여 입력 값을 받았습니다.
  • 5개 단어의 글자들을 탐색하여 열 위치에 따라 글자들을 따로 저장하여 문자열을 만들었습니다.
  • 열 위치에 따라 만들어진 문자열들을 연결하여 BufferedWriter 저장하였습니다.
  • BufferedWriter에 저장된 결과값을 출력하였습니다.

 

import java.io.*;
import java.util.ArrayList;

public class Main {
    //각 열 위치별 만들어지는 문자열 저장 리스트
    static ArrayList<String> list = new ArrayList<>();
    public static void main(String[] args) throws IOException {
        //입력값을 처리하는 BufferedReader
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //결과값을 출력하는 BufferedWriter
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        //5가지 입력되는 단어들 탐색
        for(int i=0;i<5;i++){
            String input = br.readLine();
            for(int j=0;j<input.length();j++){
                if(list.size()<=j)		//해당 열 위치의 첫 글자인 경우
                    list.add(input.charAt(j)+"");
                else		//열 위치에 문자열에 글자 추가
                    list.set(j,list.get(j) + input.charAt(j));
            }
        }
        //각 열 위치 문자열 순차 연결 및 BufferedWriter 저장
        for(int i=0;i<list.size();i++)
            bw.write(list.get(i));
        bw.flush();		//결과 출력
        bw.close();
        br.close();
    }
}

댓글