반응형
https://www.acmicpc.net/problem/1021
Python의 deque.rotate를 쓰면 쉽게 해결할 수 있는 문제.
deque.rotate(iter) : iter 횟수만큼 deque의 맨 뒷 값을 맨 앞으로 이동시킨다.
deque.rotate(-iter) : iter 횟수만큼 deque의 맨 앞 값을 맨 뒤로 이동시킨다.
해당 숫자가 있는 index를 구해서
index값이 전체 length 길이의 절반보다 길면 deque의 뒤에서 앞으로 회전시키는 게 이득이고,
그 반대면 deque의 앞에서 뒤로 값을 회전시키는 게 이득이다.
예컨대 [1,2,3,4,5,6,7] 이고 6을 빼내야 한다면
6 위치의 index는 5.
5는 전체 index 길이인 7을 2로 나눈 몫인 3보다 크다.
따라서 리스트의 뒤에서부터 앞으로 회전시키는 게 최솟값이다.
-> [6, 7, 1, 2, 3, 4, 5] 순으로 2번 rotate하면 되고, deque코드로는 rotate(len(List) - index) 형태로 구현하면 된다.
반응형
'프로그래밍 > 코딩테스트 문제풀이' 카테고리의 다른 글
[Python] 프로그래머스. 영어 끝말잇기 (Level 2) (0) | 2020.02.12 |
---|---|
[Python] 백준 17281. ⚾ (2) | 2020.02.11 |
[Python] 프로그래머스. 예산 (Level 3) (0) | 2020.02.08 |
[Python] 백준 15997. 승부 예측 (카카오 코드페스티벌 2018) (0) | 2020.02.07 |
[Python] 백준 1976. 여행 가자 (0) | 2020.02.06 |