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

[BAEKJOON]25206 너의 평점은

by 응애~ 개발자 2025. 4. 24.
728x90
반응형

문제 요약

  • 알고리즘 분류: 구현, 문자열
  • 난이도: Bronze1
  • 문제내용:
    • 입력한 문자열 5줄을 세로로 읽은 순서대로 글자를 출력한다.

문제풀이

  이번 문제는 어떻게 가로 문자열을 세로로 구현 하는 방법만 알면 되기때문에 구현은 아래와 같이 하면 쉽게 풀 수 있는 문제이다.

 

  1. 2차원 배열/리스트를 만들어 각 열의 문자들을 저장합니다.
  2. 5줄의 입력을 처리하면서 각 문자를 해당하는 열 인덱스에 저장합니다.
  3. 열의 개수는 입력에 따라 달라질 수 있으므로, 필요에 따라 동적으로 열을 추가합니다.
  4. 모든 입력을 처리한 후, 각 열의 문자들을 순서대로 이어붙여 결과 문자열을 생성합니다.

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