본문 바로가기
Algorithm

백준 2947번 <나무 조각>

by seungh2 2021. 1. 14.

백준 알고리즘 2947번

www.acmicpc.net/problem/2947

 

2947번: 나무 조각

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

www.acmicpc.net


2947번

나무 조각에 쓰여있는 수가 순서대로 들어온다.

 

들어온 순서를 정해진 과정을 적용하면서 1, 2, 3, 4, 5로 만들면 된다.

 

정해진 과정을 거치면서 바뀌는 조각의 순서를 출력하면 된다.

 

#정해진 과정

1. 첫 번째 조각의 수가 두 번째 수보다 크면, 둘의 위치를 서로 바꾼다.

2. 두 번째 조각의 수가 세 번째 수보다 크면, 둘의 위치를 서로 바꾼다.

3. 세 번째 조각의 수가 네 번째 수보다 크면, 둘의 위치를 서로 바꾼다.

4. 네 번째 조각의 수가 다섯 번째 수보다 크면, 둘의 위치를 서로 바꾼다.

5. 만약 순서가 1, 2, 3, 4, 5 순서가 아니라면 1단계로 간다.


문제 해결

입력을 받아서 정해진 과정을 순서대로 if문으로 통과시켰다. 

정말 저 과정을 코드로 구현하면 된다!!!


코드

def main():
    data = list(map(int, input().split()))
    answer = [1, 2, 3, 4, 5]
    while(True):
        if data[0] > data[1]:
            data = change(data, 0)
        if data[1] > data[2]:
            data = change(data, 1)
        if data[2] > data[3]:
            data = change(data, 2)
        if data[3] > data[4]:
            data = change(data, 3)
        if data == answer:
            break;


def change(data, n):
    temp = data[n]
    data[n] = data[n+1]
    data[n+1] = temp
    print(" ".join(str(e) for e in data))
    return data


if __name__ == '__main__':
    main()


 

728x90

'Algorithm' 카테고리의 다른 글

백준 알고리즘 <DFS와 BFS>  (0) 2021.01.26
백준 14503번 <로봇 청소기>  (0) 2021.01.17
백준 1931번 <회의실 배정>  (0) 2021.01.13
백준 11399번 <ATM>  (0) 2021.01.12
백준 11047번 <동전 0>  (0) 2021.01.09

댓글