본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Silver 5][Python] 2947번 : 나무 조각

by 빛밤하늘 2021. 5. 11.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

2947번: 나무 조각

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

www.acmicpc.net

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin

# 첫째 줄에 조각에 쓰여 있는 수를 공백으로 구분해 순서대로 입력합니다.
# 숫자는 1보다 크거나 같고, 5보다 작거나 같으며 중복되지 않습니다.
# 처음 순서는 1, 2, 3, 4, 5가 아닙니다.
piece_num = list(map(int, stdin.readline().rstrip().split(' ')))

# 순서가 1, 2, 3, 4, 5가 될 때까지 반복합니다.
while True:
    # 순서가 1, 2, 3, 4, 5라면
    if piece_num == [1, 2, 3, 4, 5]:
        # 반복문을 탈출합니다.
        break
    # 순서가 1, 2, 3, 4, 5가 아니라면
    else:
        # 1번 과정의 조건인 첫 번째 조각의 수가 두 번째 수보다 크다면
        if piece_num[0] > piece_num[1]:
            # 둘의 위치를 서로 바꿉니다.
            piece_num[0], piece_num[1] = piece_num[1], piece_num[0]
            # 위치가 바뀌었으므로 조각의 순서를 출력 형식에 맞게 출력합니다.
            print(" ".join(list(map(str, piece_num))))

        # 2번 과정의 조건인 두 번째 조각의 수가 세 번째 수보다 크다면
        if piece_num[1] > piece_num[2]:
            # 둘의 위치를 서로 바꿉니다.
            piece_num[1], piece_num[2] = piece_num[2], piece_num[1]
            # 위치가 바뀌었으므로 조각의 순서를 출력 형식에 맞게 출력합니다.
            print(" ".join(list(map(str, piece_num))))

        # 3번 과정의 조건인 세 번째 조각의 수가 네 번째 수보다 크다면
        if piece_num[2] > piece_num[3]:
            # 둘의 위치를 서로 바꿉니다.
            piece_num[2], piece_num[3] = piece_num[3], piece_num[2]
            # 위치가 바뀌었으므로 조각의 순서를 출력 형식에 맞게 출력합니다.
            print(" ".join(list(map(str, piece_num))))

        # 4번 과정의 조건인 네 번째 조각의 수가 다섯 번째 수보다 크다면
        if piece_num[3] > piece_num[4]:
            # 둘의 위치를 서로 바꿉니다.
            piece_num[3], piece_num[4] = piece_num[4], piece_num[3]
            # 위치가 바뀌었으므로 조각의 순서를 출력 형식에 맞게 출력합니다.
            print(" ".join(list(map(str, piece_num))))

결과

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글