-
[Baekjoon Online Judge] 10798번: 세로읽기문제 풀이/Baekjoon Online Judge 2021. 1. 24. 21:52
10798번: 세로읽기
총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’
www.acmicpc.net
요구사항
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
- 한 줄의 단어는 글자들을 빈칸 없이 연속으로 나열해서 최대 15개의 글자들로 이루어진다.
- 만들어진 다섯 개의 글자 개수는 서로 다를 수 있다.
- 다섯 개의 단어를 세로로 읽는다.
- 위 입력을 예시로 들면 Aa0aPAf985Bz1EhCz2W3D1gkD6x 이다.
입력
- 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’부터 ‘9’ 중 하나이다. 각 줄의 시작과 마지막에 빈칸은 없다.
출력
- 영석이가 세로로 읽은 순서대로 글자들을 출력한다. 이때, 글자들을 공백 없이 연속해서 출력한다.
처음 문제를 해결하기 위해서 가변 길이의 list를 저장하는 list를 만들어 해결하려 했다. 하지만 각각의 list의 길이를 따로 저장하는 것은 비효율적일 것으로 판단하여 Map을 사용하였다.
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.HashMap; import java.util.Map; public class Baekjoon10798 { public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); Map<Integer, String> map = new HashMap<>(); for (int n = 0; n < 5; n++) { String input = bufferedReader.readLine(); for (int i = 0; i < input.length(); i++) { if (map.containsKey(i)) { map.put(i, map.get(i) + input.charAt(i)); } else { map.put(i, Character.toString(input.charAt(i))); } } } for (Integer integer : map.keySet()) { bufferedWriter.write(map.get(integer)); } bufferedWriter.flush(); bufferedReader.close(); bufferedWriter.close(); } }
해당 자리수를 key값으로 설정하고, 자리수가 있으면 기존의 String value에 문자를 하나씩 추가해주어 해결하였다. 출력 또한 map의 value를 차례대로 접근하여 문자열 그대로 출력하게 되면 순서대로 잘 나오는 것을 알 수 있다.
예시를 들어보면,
AABCDD afzz 09121 a8EWg6 P5h3kx
이 있다고 가정하자.
key value 0 Aa0ap 1 Af985 2 Bz1Eh 3 Cz2W3 4 D1gk 5 D6X 각각의 key는 해당 value를 가지게 된다. 이것을 순서대로 출력하면,
Aa0aPAf985Bz1EhCz2W3D1gkD6x
이 나오는 것을 알 수 있다.
'문제 풀이 > Baekjoon Online Judge' 카테고리의 다른 글
[Baekjoon Online Judge] 1463번: 1로 만들기 (0) 2021.01.27 [다이나믹 프로그래밍] Dynamic programming (0) 2021.01.27 [Baekjoon Online Judge] 10610번: 30 (0) 2021.01.24 [Baekjoon Online Judge] 4949번: 균형잡힌 세상 (0) 2021.01.23 [Baekjoon Online Judge] 1764번: 듣보잡 (0) 2021.01.20