문제를 보며 (0,A) (1,B) (2,C) 이런식으로
인덱스를 부여받은 튜플형식의 데이터를 어떻게 만들어내야 할지 고민했는데
(클래스를 만들어서 해야하나 이러며....ㅎ)
파이썬에 그런 내장 함수도 있었다. 역시 갓파이썬,,
# most 1
def solution(priorities, location):
queue = [(i,p) for i,p in enumerate(priorities)]
answer = 0
while True:
cur = queue.pop(0)
if any(cur[1] < q[1] for q in queue):
queue.append(cur)
else:
answer += 1
if cur[0] == location:
return answer
# most 2 : deque 사용
from collections import deque
def solution(priorities, location):
index_list = deque([i for i in range(len(priorities))])
maximum = max(priorities)
answer = 0
while True:
index = index_list.popleft()
if priorities[index] < maximum:
index_list.append(index)
else:
answer += 1
priorities[index] = 0
maximum = max(priorities)
if index == location:
return answer
인덱스와 원소로 이루어진 튜플(tuple)을 만들어준다.
>>> for entry in enumerate(['A', 'B', 'C']):
... print(entry)
...
(0, 'A')
(1, 'B')
(2, 'C')
>>> for i, letter in enumerate(['A', 'B', 'C']):
... print(i, letter)
...
0 A
1 B
2 C
argument로 iterable한 객체를 받아 이 객체를 돌면서
조건을 검사해 True/False 답을 반환한다
cur = 3
temp = [1,3,6,2]
if any(cur<num for num in temp):
print("There exist number that is larger than 3")
>>> a = [1,2,3]
>>> a.pop()
3
>>> a
[1, 2]
점프 투 파이썬 / 02장 파이썬 프로그래밍의 기초, 자료형 / 02-3 리스트
앞, 뒤 양쪽 방향에서 엘리먼트(element)를 추가하거나 제거할 수 있다.
from collections import deque
deq = deque()
여러 메서드들이 있는데 ,
이 문제에서는 아래 두가지를 사용했다.
deque.appendleft(item) : item을 데크의 왼쪽 끝에 삽입
deque.pop() : 데크의 오른쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제
데크(deque) 언제, 왜 사용해야 하는가?