알고리즘 풀이/백준

[백준 2947] 나무 조각

mhko411 2021. 2. 24. 23:41
728x90

문제 
5개의 나무 조각에는 1부터 5까지 숫자 중 하나가 쓰여져 있다.
다음과 같은 과정을 거쳐 1, 2, 3, 4, 5 순서로 만들어보자.
1. 첫 번째 조각의 수가 두 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
2. 두 번째 조각의 수가 세 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
3. 세 번째 조각의 수가 네 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
4. 네 번째 조각의 수가 다섯 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
5. 만약 순서가 1, 2, 3, 4, 5 순서가 아니라면 1 단계로 다시 간다.

입력
첫째 줄에 나무 조각에 쓰여있는 수가 순서대로 주어진다.

출력
두 조각의 순서가 바뀔때 마다 조각의 순서를 출력한다.


문제에서 주어진 조건대로 구현을 한다.

 

구현

나무 조각의 정보를 입력받는다.

그리고 1, 2, 3, 4, 5로 정렬되었는지 검사하기 위해 numbers를 생성하고 numbers와 비교하도록 한다.

tree = list(map(int, input().split()))
numbers = [1, 2, 3, 4, 5]

 

나무조각이 정렬되어 있지 않을 때까지 반복을 한다.

현재의 수가 다음의 수보다 크다면 두 개의 수를 스왑해주고 결과를 출력한다.

while tree != numbers:
    for idx in range(4):
        if tree[idx] > tree[idx+1]:
            tree[idx], tree[idx+1] = tree[idx+1], tree[idx]
            print(*tree)

전체 코드

tree = list(map(int, input().split()))
numbers = [1, 2, 3, 4, 5]

while tree != numbers:
    for idx in range(4):
        if tree[idx] > tree[idx+1]:
            tree[idx], tree[idx+1] = tree[idx+1], tree[idx]
            print(*tree)

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

[백준 17779] 게리멘더링 2  (0) 2021.02.25
[백준 17144] 미세먼지 안녕!  (0) 2021.02.25
[백준 1244] 스위치 켜고 끄기  (0) 2021.02.24
[백준 2407] 조합  (0) 2021.02.23
[백준 15654] N과 M (5)  (0) 2021.02.23