목록algorithm (61)
현제의 현재이야기

첫번째 try: from collections import deque n = int(input()) scores = [] time = 0 result = 0 resister = [] for i in range(n): a = deque(map(int, input().split())) if a[0] == 1: if time == 0: time = a[2] - 1 scores.append(a[1]) if time == 0: result += scores.pop() else: resister.append(time) time = a[2] - 1 scores.append(a[1]) if time == 0: result += scores.pop() else: if time == 0: result += scores.p..

from collections import deque n = int(input()) a = list(map(int, input().split())) a = deque(a) number = [ i + 1 for i in range(n) ] number = deque(number) results = [] pointer = 0 for i in range(n): pointer = a[0] a.popleft() pop = number.popleft() results.append(str(pop)) if pointer >= 0: a.rotate(-(pointer - 1)) number.rotate(-(pointer - 1)) elif pointer < 0: a.rotate(-(pointer)) number.rotat..

import sys from collections import deque input = sys.stdin.readline n, m, v = map(int, input().split()) # n: 노드개수 m: 질문 횟수 v: 가르키는 노드 a = list(map(int, input().split())) cut_a = a[:] cut_a = deque(cut_a) result = [] for _ in range(v - 1): cut_a.popleft() for _ in range(m): question = int(input()) if question < n: result.append(a[question]) else: question -= v - 1 question = question % len(cut_a)..

from collections import deque n, k = tuple(map(int, input().split())) a = [ i + 1 for i in range(n) ] a = deque(a) results = [] while len(a) != 0: a.rotate(-(k - 1)) pop = a.popleft() results.append(pop) print('') 덱의 로테이트를 이용하니깐 매우 깔끔하게게 되었다. | 알고리즘 n, k 받고 1 ~ n까지의 수가 담긴 덱을 생성 a가 빌 때까지 k - 1 번 왼쪽으로 로테이트하고 popleft 의의로 리스트 [] 를 로 바꾸는 것이 어려웠다. 파이썬 * unpacking 관련 정보 그리고 deque는 pop연산 중 특정한 위치의 값을 po..

from collections import deque n, m = tuple(map(int, input().split())) target = list(map(int, input().split())) target = deque(target) all = [ i + 1 for i in range(n) ] all = deque(all) cnt = 0 while len(target) != 0 : if all[0] == target[0]: all.popleft() target.popleft() elif all[0] != target[0] and all.index(target[0]) (len(all) // 2): all.rotate() cnt += 1 print(cnt) 덱을 활용하는 문제, 덱에 친해질 수 있는 문..
def profit(n ,a): maxi = max(a) profit = 0 for _ in range(n): if a[0] != maxi: profit += maxi - a[0] a.pop(0) elif a[0] == maxi: a.pop(0) if len(a) != 0: maxi = max(a) print(profit) t = int(input()) for _ in range(t): n = int(input()) a = list(map(int, input().split())) profit(n, a) >> 시간초과 t = int(input()) for _ in range(t): n = int(input()) a = list(map(int, input().split())) maxi = 0 profit =..