백준 나무 조각

KIMYEONGJUN·2025년 3월 20일
0
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에 조각에 쓰여 있는 수가 순서대로 주어진다.
숫자는 1보다 크거나 같고, 5보다 작거나 같으며, 중복되지 않는다. 처음 순서는 1, 2, 3, 4, 5가 아니다.

두 조각의 순서가 바뀔때 마다 조각의 순서를 출력한다.

내가 이 문제를 보고 생각해본 부분

입력 처리: BufferedReader를 사용하여 입력을 받고, 이를 공백 기준으로 나눠 정수 배열 pieces에 저장해준다.
정렬 과정: 반복문을 통해 각 인접한 조각들을 비교하고, 필요에 따라 위치를 바꾼다.
위치가 바뀔 때마다 현재 상태를 StringBuilder에 저장해준다.
최종 출력: 모든 위치 변경이 끝난 후, StringBuilder의 내용을 한 번에 출력한다.

코드로 구현

package baekjoon.baekjoon_27;

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

// 백준 2947번 문제
public class Main966 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        // 입력 받기
        String[] input = br.readLine().split(" ");
        int[] pieces = new int[5];
        for(int i = 0; i < 5; i++) {
            pieces[i] = Integer.parseInt(input[i]);
        }

        boolean sorted = false;

        while(!sorted) {
            sorted = true;

            // 비교 및 스왑
            for(int i = 0; i < 4; i++) {
                if(pieces[i] > pieces[i + 1]) {
                    // 스왑
                    int temp = pieces[i];
                    pieces[i] = pieces[i + 1];
                    pieces[i + 1] = temp;

                    // 결과 저장
                    sb.append(pieces[0]).append(" ")
                            .append(pieces[1]).append(" ")
                            .append(pieces[2]).append(" ")
                            .append(pieces[3]).append(" ")
                            .append(pieces[4]).append("\n");

                    sorted = false; // 아직 정렬되지 않음
                }
            }
        }

        // 최종 출력
        System.out.print(sb.toString());
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글

관련 채용 정보