Backend
home
🪵

[백준] 나무 조각

생성일
2025/04/12 13:17
태그
BaekJoon
게시일
2025/04/12
최종 편집 일시
2025/04/12 13:21

문제

해결 방안 고민

arr배열의 크기는 5이며, 유효한 인덱스는 0부터 4까지이다.
배열의 인덱스를 비교하여 앞의 인덱스가 뒤의 인덱스보다 크면 swap한다.

해결 방법

arr[i] > arr[i + 1] ⇒ 앞의 인덱스와 뒤의 인덱스를 비교한다.
배열의 인덱스가 3을 넘지 않도록 초기화하는 과정이 필요하다.
임시 변수인 temp를 만들어서 swap 과정을 진행한다.
swap이 되었음을 의미하는 boolean 변수를 생성하여 swap이 끝나면 반복문을 빠져나온다.

코드

package algo250412; import java.io.*; import java.util.*; /* 첫 번째 조각의 수가 두 번째 수보다 크다면, 둘의 위치를 서로 바꾼다. 두 번째 조각의 수가 세 번째 수보다 크다면, 둘의 위치를 서로 바꾼다. 세 번째 조각의 수가 네 번째 수보다 크다면, 둘의 위치를 서로 바꾼다. 네 번째 조각의 수가 다섯 번째 수보다 크다면, 둘의 위치를 서로 바꾼다. 만약 순서가 1, 2, 3, 4, 5 순서가 아니라면 1 단계로 다시 간다. */ // 백준 - 나무조각 (브론즈 1) public class Baek2947 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] arr = new int[5]; StringTokenizer st = new StringTokenizer(br.readLine()); for (int i = 0; i < 5; i++) { arr[i] = Integer.parseInt(st.nextToken()); } // 배열의 인덱스가 3을 초과하지 않도록 하는 조건을 추가 while (true) { boolean swapped = false; for (int i = 0; i < 4; i++) { if (arr[i] > arr[i + 1]) { int temp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = temp; swapped = true; for (int j = 0; j < 5; j++) { System.out.print(arr[j] + " "); } System.out.println(); } } if (!swapped) { break; } } } }
Java
복사