2947번 나무조각
해당 글에서는 백준 2947번 나무조각 문제를 풀이합니다.
나무조각
📃 문제
동혁이는 나무 조각을 5개 가지고 있다. 나무 조각에는 1부터 5까지 숫자 중 하나가 쓰여져 있다. 또, 모든 숫자는 다섯 조각 중 하나에만 쓰여 있다.
동혁이는 나무 조각을 다음과 같은 과정을 거쳐서 1, 2, 3, 4, 5 순서로 만들려고 한다.
- 첫 번째 조각의 수가 두 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
- 두 번째 조각의 수가 세 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
- 세 번째 조각의 수가 네 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
- 네 번째 조각의 수가 다섯 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.
- 만약 순서가 1, 2, 3, 4, 5 순서가 아니라면 1 단계로 다시 간다.
처음 조각의 순서가 주어졌을 때, 위치를 바꿀 때 마다 조각의 순서를 출력하는 프로그램을 작성하시오.
📬 입력
첫째 줄에 조각에 쓰여 있는 수가 순서대로 주어진다. 숫자는 1보다 크거나 같고, 5보다 작거나 같으며, 중복되지 않는다. 처음 순서는 1, 2, 3, 4, 5가 아니다.
📭 출력
두 조각의 순서가 바뀔때 마다 조각의 순서를 출력한다.
🙆🏻♂️ 문제 답안
- 내가 제출한 답
1 2 3 4 5 6 7 8 9
wood_data = list(map(int, input().split())) while True: if wood_data == [1, 2, 3, 4, 5]: break for i in range(4): if wood_data[i] > wood_data[i+1]: wood_data[i], wood_data[i+1] = wood_data[i+1], wood_data[i] print(*wood_data)
✍️ 한가지 더
코드에서 print(*wood_data)
에서 *
을 사용하면 리스트의 요소를 공백으로 구분하여 출력할 수 있다. 이를 언패킹이라고 하는데, 자세한 내용은 따로 포스팅을 해보겠다.
1
2
🙋🏻♂️ 개인 공부&기록 블로그입니다. 오류나 틀린 부분이 있을 경우
비난 및 비판 보다는 댓글을 통해 이슈작성 부탁드립니다. 🙋🏻♂️
This post is licensed under CC BY 4.0 by the author.