본문 바로가기

BOJ/Python

[BOJ/백준] 2947 - 나무 조각 (Python)

문제

문제링크

바로 앞뒤의 나무조각의 수를 비교하여 앞의 수가 더 크다면 둘의 위치를 바꾼다.

앞뒤의 순서가 바뀌면 조각의 순서를 출력하고 조각의 순서가 1 2 3 4 5가 될 때까지 진행한다.

 

풀이

for문을 통해 바로 앞뒤의 조각의 수를 비교해 다르다면 바꾸고 출력하는 과정을 거친다.

만약 맨 앞에서부터 끝까지 한 페이즈를 다 돌았을 때도 순서가 정렬된 상태가 아니라면 다시 과정을 반복해야 한다.

이때 함수를 다시 불러오게 된다.  

이 과정들을 반복해 결국 순서가 1 2 3 4 5가 된다면 종료된다.

 

코드

def change_wood(wood_list):
    for i in range(4):
        if wood_list[i]>wood_list[i+1]:
            wood_list[i], wood_list[i+1] = wood_list[i+1], wood_list[i]
            print(*wood_list, sep=' ')
    if wood_list!=sorted(wood_list):
        change_wood(wood_list)

wood_list=list(map(int, input().split()))
change_wood(wood_list)