[백준] 2947번: 나무 조각 (Java)

seri·2024년 6월 30일
0

코딩테스트 챌린지

목록 보기
7/62

문제: https://www.acmicpc.net/problem/2947

어제 풀었는데 급하게 약속 나가느라 실수로 제출이 안됐다,,

📌 문제 탐색하기

입력 : 첫째 줄 - 조각의 순서 x (1 ≤ x ≤ 5, 중복 없음)
출력 : 위치가 변경될때의 조각의 순서 출력

가능한 시간복잡도

O(N^2)

알고리즘 선택

버블정렬

📌 코드 설계하기

  1. 첫째 줄에 조각의 순서를 Input으로 받는다.
  2. 버블정렬을 이용해 처음 조각의 순서가 다음 조각의 순서보다 크면 위치를 서로 변경한다. 위치가 변경될때마다 조각의 순서를 출력한다.
  3. 모든 조각의 순서가 오름차순으로 정렬될 때 까지 실행한다.

📌 시도 회차 수정 사항 (Optional)

💡 시도별 수정 사항은 어떻게 작성하나요?
- 무문별하게 “맞았습니다”가 나올때 까지 수정하는 형태의 문제 풀이를 반복하면 , 내가 어떤 실수를 해서 해당 문제를 틀렸는지 모르게 됩니다.
- 틀렸습니다를 받았다면 왜 틀렸는지 고민해보고 , 어떻게 수정할 수 있는지 고민하는 과정을 작성해주시면 됩니다.
- 위에 내가 세울 설계에서 어떤 부분이 틀렸는지도 함께 점검해보세요
- 한번에 맞출수도 있기 때문에 이 칸은 Optional입니다.

1회차

2회차

📌 정답 코드

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] x = new int[5];
        
        for (int i = 0; i < 5; i++) {
            x[i] = sc.nextInt();
        }
        
        boolean sorted = false;
        
        while (!sorted) {
            sorted = true;
            for (int j = 0; j < 4; j++) {
                if (x[j] > x[j + 1]) {
                    int temp = x[j];
                    x[j] = x[j + 1];
                    x[j + 1] = temp;
                    
                    for (int i = 0; i < 5; i++) {
                        System.out.print(x[i] + " ");
                    }
                    
                    System.out.println();
                    sorted = false;
                }
            }
        }
    }
}
profile
꾸준히 정진하며 나아가기

0개의 댓글