728x90
1. 문제
동혁이는 나무 조각을 5개 가지고 있다. 나무 조각에는 1부터 5까지 숫자 중 하나가 쓰여져 있다. 또, 모든 숫자는 다섯 조각 중 하나에만 쓰여 있다.
동혁이는 나무 조각을 다음과 같은 과정을 거쳐서 1, 2, 3, 4, 5 순서로 만들려고 한다.
1. 첫 번째 조각의 수가 두 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
2. 두 번째 조각의 수가 세 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
3. 세 번째 조각의 수가 네 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
4. 네 번째 조각의 수가 다섯 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
만약 순서가 1, 2, 3, 4, 5 순서가 아니라면 1 단계로 다시 간다.
처음 조각의 순서가 주어졌을 때, 위치를 바꿀 때 마다 조각의 순서를 출력하는 프로그램을 작성하시오.
2. 풀이
버블정렬이다. 버블 정렬은 가장 끝의 큰 수부터 맞춰지기때문에 두 번째 반복문은 j<4-i로 조건을 건다.
import java.io.*;
import java.util.*;
public class BOJ_2947_나무조각 {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int[] order = new int[5];
StringTokenizer st = new StringTokenizer(in.readLine());
for(int i=0;i<5;i++) order[i] = Integer.parseInt(st.nextToken());
StringBuilder sb = new StringBuilder();
for(int i=0;i<4;i++){
for(int j=0;j<4-i;j++){
if(order[j] > order[j+1]){
int tmp = order[j];
order[j] = order[j+1];
order[j+1] = tmp;
for(int o:order){
sb.append(o).append(' ');
}
sb.append('\n');
}
}
}
System.out.print(sb);
}
}
3. 결과
'코딩테스트 > BOJ' 카테고리의 다른 글
[BOJ] 17143 낚시왕 - JAVA (0) | 2023.05.24 |
---|---|
[BOJ] 17135 캐슬디펜스 - JAVA (0) | 2023.05.23 |
[BOJ] 2839 설탕배달 - JAVA (1) | 2023.05.21 |
[BOJ] 2206 벽 부수고 이동하기 - JAVA (0) | 2023.05.21 |
[BOJ] 2961 도영이가 만든 맛있는 음식 - JAVA (0) | 2023.05.20 |
댓글