Inor

[백준] 10798번 세로읽기 본문

Algorithm/백준

[백준] 10798번 세로읽기

Inor 2018. 1. 31. 21:42

- 문제 : https://www.acmicpc.net/problem/10798


 가로로 쓰여진 단어를 세로로 변경하고 빈칸인 부분은 무시해서 이어 붙여주면 되는 문제 입니다.




- 풀이


 경사로 문제와 비슷하게 해결했습니다. for문에서 row와 col의 위치를 변경해주는 것이 아니라 애초에 위치가 변경된 배열을 선언하고 위치를 재배열 해줬습니다. 그 이후에는 비어있는 공간을 특정 문자로 채우고 특정 문자가 있을 경우에는 건너 뛰어서 계산하도록 했습니다.




- 코드


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class ReadingVertically {
	static final char noneValue = '-';
	StringBuffer sb;
	BufferedReader br;
	char[][] characters;
	char[][] charactersRelocated;

	void setValues() {
		String oneLine;
		char[] charactersAtLine;

		sb = new StringBuffer();
		characters = new char[5][15];
		charactersRelocated = new char[15][5];
		for (int i = 0; i < charactersRelocated.length; i++) {
			Arrays.fill(charactersRelocated[i], noneValue);
		}

		br = new BufferedReader(new InputStreamReader(System.in));
		try {
			for (int i = 0; i < characters.length; i++) {
				oneLine = br.readLine();
				charactersAtLine = oneLine.toCharArray();
				for (int j = 0; j < charactersAtLine.length; j++) {
					characters[i][j] = charactersAtLine[j];
					charactersRelocated[j][i] = characters[i][j];
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	void solve() {
		setValues();
		
		for (int i = 0; i < charactersRelocated.length; i++) {
			for (int j = 0; j < charactersRelocated[i].length; j++) {
				if(charactersRelocated[i][j] == noneValue){
					continue;
				}
				sb.append(charactersRelocated[i][j]);
			}
		}

		System.out.println(sb.toString());
	}

	public static void main(String[] args) {
		ReadingVertically m = new ReadingVertically();
		m.solve();
	}

}


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

[백준] 10814번 나이순 정렬  (0) 2018.02.01
[백준] 12761번 돌다리  (0) 2018.01.31
[백준] 1992번 쿼드트리  (0) 2018.01.28
[백준] 2573번 빙산  (0) 2018.01.12
[백준] 1963번 킹  (0) 2018.01.11
Comments