본문 바로가기
코딩 테스트/백준

[백준 10798번] java 세로읽기

by snow_hong 2023. 4. 20.

- 백준 링크

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

 

10798번: 세로읽기

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

www.acmicpc.net


문제


풀이

2가지 방법으로 제작을 해보았는데 1번은 메모리가 적은대신 시간이 적었고 2번째는 시간은 빠르지만 메모리가 더 컸다.

//1번 풀이
import java.io.*;
import java.util.*;

public class Main {

	public static void main(String[] args) throws IOException {
		char[][] arr = new char[5][15];
		int max = 0;
		
		BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
		
		for(int i=0; i<arr.length; i++){
		 String str = br.readLine();
		 max = Math.max(max, str.length()); //가장 긴 문자열의 길이 저장
		 for(int j = 0; j < str.length(); j++) {
				arr[i][j] =str.charAt(j);
			}
		}
		
		for(int i=0; i<max; i++){
				for(int j=0; j<5; j++){
					if(arr[j][i] != '\0') // char 배열의 초깃값 = '\0'
					System.out.print(arr[j][i]);
			}
		}
		
	}

	
}


//2번 풀이
import java.io.*;
import java.util.*;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		String[] arr = new String[5];
		int max = 0;
		
		for (int i = 0; i < 5; i++) {
			arr[i] = br.readLine();
			if(arr[i].length() > max) max = arr[i].length();
		}
		
		for(int i = 0; i < max; i++) {
			for(int j = 0; j < 5; j++) {
				if(arr[j].length() <= i) continue;
				sb.append(arr[j].charAt(i));
			}
		}
		
		System.out.print(sb);
		
	}

	
}
728x90

댓글