SSONG Cloud
[백준] 2947 나무 조각 본문
반응형
문제 출처: https://www.acmicpc.net/problem/2947
2947번: 나무 조각
첫째 줄에 조각에 쓰여 있는 수가 순서대로 주어진다. 숫자는 1보다 크거나 같고, 5보다 작거나 같으며, 중복되지 않는다. 처음 순서는 1, 2, 3, 4, 5가 아니다.
www.acmicpc.net
1. 입력
: 첫째 줄에 조각에 쓰여 있는 수가 순서대로 주어진다.
: 숫자는 1보다 크거나 같고, 5보다 작거나 같으며, 중복되지 않는다.
: 처음 순서는 1, 2, 3, 4, 5가 아니다.
2. 결과
: 두 조각의 순서가 바뀔때 마다 조각의 순서를 출력한다.
3. 풀이
: 문제에 따라 조건이 성립하면 두 수의 자리를 바꿀 수 있도록 한다.
: 자리를 바꾸면 바뀐 자리를 출력할 수 있도록 한다.
: 만약 현재의 자리가 1 2 3 4 5 순서를 만족한다면 반복을 멈춘다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringBuilder sb = new StringBuilder();
static StringTokenizer st;
public static void main(String[] args) throws IOException {
st = new StringTokenizer(br.readLine());
int[] arr = new int[5];
for(int i = 0; i < 5; i++) arr[i] = Integer.parseInt(st.nextToken());
out : while(true) {
boolean flag = 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;
flag = true;
}
if(flag) {
for(int j = 0; j < 5; j++) {
sb.append(arr[j] + " ");
}
sb.append("\n");
flag = false;
}
int cnt = 0;
for(int j = 0; j < 5; j++) {
if(arr[j] == j+1) cnt++;
}
if(cnt == 5) break out;
}
}
System.out.println(sb);
}
}
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준] 1240 노드사이의 거리 (0) | 2022.03.06 |
---|---|
[백준] 13565 침투 (0) | 2021.07.11 |
[백준] 1388 바닥장식 (0) | 2021.06.25 |
[백준] 17144 미세먼지 안녕! (0) | 2021.06.21 |
[백준] 2109 순회강연 (0) | 2021.06.18 |
Comments