고양이와 코딩
[프로그래머스] 배열 회전시키기.py (따봉 gpt야 고마워!) 본문
문제
코드
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 리스트의 맨 뒤에 추가된다 !!
'python' 카테고리의 다른 글
[프로그래머스] 가까운 수.py (0) | 2023.04.17 |
---|---|
[프로그래머스] 컨트롤 제트.py (0) | 2023.04.15 |
[프로그래머스] 2차원으로만들기.py (0) | 2023.04.06 |
[프로그래머스] 모스부호 (1).py (0) | 2023.04.04 |
[프로그래머스] 진료순서 정하기.py (0) | 2023.04.03 |