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
복사