1. 문제

www.acmicpc.net/problem/2947

 

2947번: 나무 조각

첫째 줄에 조각에 쓰여 있는 수가 순서대로 주어진다. 숫자는 1보다 크거나 같고, 5보다 작거나 같으며, 중복되지 않는다. 처음 순서는 1, 2, 3, 4, 5가 아니다.

www.acmicpc.net

2. 접근방법

버블 정렬을 문제로 만든 것 같다.

 

크게 어려울 것 없이 시키는데로 앞뒤 비교 후 기준에 안맞으면 swap을 하고

 

swap이 한번도 이루어 지지 않았다면 반복을 종료하면 된다.

 

단 출력을 swap이 이뤄질때 마다 해야한다는 점에 주의하자.

3. 자바 코드

package Silver;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class P2947나무조각 {
	
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int arr[] = new int[5];
		for(int i = 0 ; i < 5 ; i++)
			arr[i] = Integer.parseInt(st.nextToken());
		boolean swap = true;
		ArrayList<String> result = new ArrayList<String>();
		while(swap) {
			swap = false;
			for(int i = 0 ; i < 4 ; i++) {
				if(arr[i] > arr[i+1]) {
					arr[i] = arr[i+1] ^ arr[i] ^(arr[i+1] = arr[i]);
					String S = "";
					for(int j = 0 ; j < 5 ; j++)
						S += arr[j] +" ";
					result.add(S);
					swap = true;
				}
			}
		}
		for(int i = 0 ; i < result.size() ; i++)
			System.out.println(result.get(i));
		
	}

}

4. 마치며

버블 정려얼

 

 

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준] 1946 신입사원  (1) 2021.04.08
[백준] 1748 수 이어 쓰기1  (0) 2021.03.15
[백준] 1138 한 줄로 서기  (0) 2021.03.15
[백준] 2847 게임을 만든 동준이  (1) 2021.03.05
[백준] 14725 개미굴  (1) 2021.02.26

+ Recent posts