고양이와 코딩

[프로그래머스] 배열 회전시키기.py (따봉 gpt야 고마워!) 본문

python

[프로그래머스] 배열 회전시키기.py (따봉 gpt야 고마워!)

ovovvvvv 2023. 4. 10. 21:34
728x90

문제

 

코드

def solution(numbers, direction):
    if direction == 'right':
        numbers.insert(0, numbers.pop())
    elif direction == 'left':
        numbers.append(numbers.pop(0))
    return numbers

분명히 pop()을 써야겠다는 것도 알고있고, if문을 써야겠다는것도 알고 있지만 도무지! 코드가 짜여지질 않아서(바보아닙니다) 오늘은

chatgpt에게 부탁해보았다.

 

저 두 부분

numbers.insert(0, numbers.pop())

numbers.append(numbers.pop(0))

을 설명해보겠다!! (지피티야 정말 고마워)


먼저 direction == 'right' 

          numbers.insert(0, numbers.pop()) 

 

'numbers.pop()' 은 리스트에서 맨 뒤의 원소를 제거하고 반환하는 메서드이다!

그리고 'numbers.insert(0, x)'는 리스트의 맨 앞에 원소 'x'를 삽입하는 메서드이다.

따라서 리스트의 맨 끝 원소가 pop() 메서드에 의해 제거되고, 그 결과 반환된 값이 'insert()' 메서드를 호출하여 numbers 리스트의 맨 앞에 삽입된다!  ==> 이렇게 하면 'numbers' 리스트의 모든 원소가 한 칸씩 우측으로 쉬프트되며, 맨 끝의 원소가 맨 앞으로 이동하게 된다.


다음으로  direction == 'left'

                   numbers.append(numbers.pop(0)) 

 

'numbers.pop(0)' 을 사용하여 리스트의 맨 "앞" 원소를 제거하고 반환한다.

그리고 'numbers.append(x)' 는 리스트의 맨 "뒤"에 원소 'x'를 추가하는 메서드이다. 

따라서 리스트의 맨 앞 원소가 pop(0) 메서드에 의해 제거되고, 그 결과 반환된 값이 'append()' 메서드를 호출하여 numbers 리스트의 맨 뒤에 추가된다 !!