728x90
반응형
문제 요약
- 알고리즘 분류: 구현, 문자열
- 난이도: Bronze1
- 문제내용:
- 입력한 문자열 5줄을 세로로 읽은 순서대로 글자를 출력한다.
문제풀이
이번 문제는 어떻게 가로 문자열을 세로로 구현 하는 방법만 알면 되기때문에 구현은 아래와 같이 하면 쉽게 풀 수 있는 문제이다.
- 2차원 배열/리스트를 만들어 각 열의 문자들을 저장합니다.
- 5줄의 입력을 처리하면서 각 문자를 해당하는 열 인덱스에 저장합니다.
- 열의 개수는 입력에 따라 달라질 수 있으므로, 필요에 따라 동적으로 열을 추가합니다.
- 모든 입력을 처리한 후, 각 열의 문자들을 순서대로 이어붙여 결과 문자열을 생성합니다.
Code
Python
strings = [[]] # 2차원 리스트 초기화, 세로로 읽은 문자들을 저장할 리스트
# 5줄의 입력을 처리
for _ in range(5):
line = input() # 한 줄 읽기
# 각 줄의 문자를 세로로 저장
for i in range(len(line)):
# 필요한 경우 새로운 열(리스트) 추가
if len(strings) < (i + 1):
strings.append([])
# i번째 열에 현재 문자 추가
strings[i].append(line[i])
# 결과 출력: 모든 열을 먼저 내부적으로 조인한 후, 외부적으로 조인하여 최종 문자열 생성
print(''.join([''.join(line) for line in strings]))
Java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader((System.in)));
// 2차원 리스트 생성 (세로로 읽은 문자들을 저장할 리스트)
List<List<String>> str = new ArrayList<>();
str.add(new ArrayList<>()); // 첫 번째 열을 위한 리스트 초기화
// 5줄의 입력을 처리
for (int i = 0; i < 5; i++) {
String line = br.readLine(); // 한 줄 읽기
// 각 줄의 문자를 세로로 저장
for (int j = 0; j < line.length(); j++) {
// 필요한 경우 새로운 열(리스트) 추가
if(str.size() < (j + 1)) {
str.add(new ArrayList<>());
}
// j번째 열에 현재 문자 추가
str.get(j).add(String.valueOf(line.charAt(j)));
}
}
// 결과를 저장할 StringBuilder 생성
StringBuilder sb = new StringBuilder();
// 모든 열(세로로 읽은 문자들)을 순서대로 연결
for (int i = 0; i < str.size(); i++) {
// 각 열의 문자들을 공백 없이 연결하여 StringBuilder에 추가
sb.append(String.join("", str.get(i)));
}
System.out.println(sb.toString());
}
}
Javascript
var input = require('fs').readFileSync('/dev/stdin').toString().toString().split('\n');
let strings = []
strings.push([]);
// 5줄의 입력을 처리
for (let i = 0; i < 5; i++) {
const line = input[i]; // i번째 줄 읽기
// 각 줄의 문자를 세로로 저장
for (let j = 0; j < line.length; j++) {
// 필요한 경우 새로운 열(배열) 추가
if(strings.length < (j + 1)){
strings.push([]);
}
// j번째 열에 현재 문자 추가
strings[j].push(line[j])
}
}
let result = "" // 결과 문자열을 저장할 변수 초기화
// 모든 열(세로로 읽은 문자들)을 순서대로 연결
for (let i = 0; i < strings.length; i++) {
// 각 열의 문자들을 공백 없이 연결하여 결과 문자열에 추가
result += strings[i].join("");
}
console.log(result);
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[BAEKJOON]11005 진법 변환 2 (0) | 2025.04.29 |
---|---|
[BAEKJOON]2745 진법 변환 (0) | 2025.04.24 |
[BAEKJOON]25206 너의 평점은 (0) | 2025.04.17 |
[BAEKJOON]2748 피보나치 수 2 (0) | 2025.01.14 |
[BAEKJOON]1965 상자넣기 (0) | 2024.11.27 |