[python_파이썬_Pass]백준_2947번_나무 조각_시뮬레이션_풀이

2024. 8. 26. 20:03코드리뷰

728x90
반응형

공부하는허딩크 : https://www.youtube.com/live/WSAIqn6prZQ?feature=shared

 

회사 점심시간을 활용해 해결했다.

 

<첫번째 시도 : 틀렸습니다.>

마지막 print할때 리스트로 출력하는 기초적인 실수....

import sys
input = sys.stdin.readline

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

while nums != answer:
    for i in range(5 - 1):
        if nums[i] > nums[i + 1]:
            x, y = nums[i], nums[i + 1]
            nums[i], nums[i + 1] = y, x
            print(nums)

 

<두번째 시도 : 맞았습니다.>

순서가 맞지 않으면 다시 1단계로 가야하기 때문에 while문으로 해서 반복하는 코드를 구현했다.

import sys
input = sys.stdin.readline

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

while nums != answer:
    for i in range(5 - 1):
        if nums[i] > nums[i + 1]:
            x, y = nums[i], nums[i + 1]
            nums[i], nums[i + 1] = y, x
            print(*nums)
       

 

<다른 사람 풀이 참고>

나와 방향은 비슷하지만 while문 안에 if문과 break를 통해 루프를 종료할 수 있기 때문에 내 코드보다 효율적이다.

num = list(map(int, input().split()))

while True:
    for i in range(len(num) - 1):
        if num[i] > num[i+1]:
            num[i], num[i+1] = num[i+1], num[i]
            print(" ".join(map(str, num)))
    if num == [1, 2, 3, 4, 5]:
        break      

 

728x90
반응형