본문 바로가기
알고리즘/백준

10798번 문제 : 세로읽기

by son_i 2023. 5. 2.
728x90

10798번: 세로읽기 (acmicpc.net)

 

10798번: 세로읽기

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

www.acmicpc.net

자바

간단해보였는데 50분이나 걸렸다 ㅡㅡ

두 세번 뒤엎은 것 같다.

 

처음시도

ArrayList를 사용해서 첫 줄 ABCDE입력시 인덱스 0,5,10,15,20번째에 넣고

둘째 줄 abcde입력시 인덱스를 1,6,11,16,21 이런식으로 넣어줘서 마지막에는 list사이즈만큼 반복문을 돌려서 값을 출력하려고 했다. 그런데 잘 안 됐음. 보니까 될 거 같은데 왜 안 됐지 ? 다시 해봐야겠다. 암튼

 

두 번째 시도

ArrayList에 자료형을 <char[]> 이렇게 char형 배열로 넣어서 한 줄 문자열 입력받은뒤에 하나씩 찢어 char형 1차원 배열 c에 넣고 걔를 하나씩 list에 추가를 해줬다. 근데 출력할 때 한 줄이 5글자가 아닐 때 오류가 나더라. 굳이 이렇게 복잡하게 할 필요가 있나 싶었다.

 

마지막 정답

그냥 2차원 배열 만들어서 값 하나하나씩 저장한 다음에 출력할 때 값이 0이면 continue로 다음 반복으로 넘어가게했고 아니면 화면에 출력한다. 근데 출력 순서가 0,0   1,0   2,0 .. 이런식으루 ..

package algorithm;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

class Main{
	public static void main(String[] args) throws IOException {
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	
    	//int N = Integer.parseInt(st.nextToken());
    	//int M = Integer.parseInt(st.nextToken());
    	char arr[][] = new char[15][15];
    	//List <char[]> list = new ArrayList<>();
    	for(int i=0;i<5;i++) {
    		String str = br.readLine();
   
    		for(int j=0;j<str.length();j++) {
    			arr[i][j]= str.charAt(j);
    		}
    	}
    	for(int i=0;i<15;i++) {
    		for(int j=0;j<15;j++) {
    			if(arr[j][i] != 0)
    			System.out.print(arr[j][i]);
    			else continue;
    		}
    	}
 	}
}

'알고리즘 > 백준' 카테고리의 다른 글

2745번 문제 : 진법변환  (0) 2023.05.05
2563번 문제 : 색종이  (0) 2023.05.05
2566번 문제 : 최댓값  (0) 2023.05.02
2738번 문제 : 행렬 덧셈  (0) 2023.05.02
25206번 문제 : 너의 평점은  (0) 2023.05.02