앎을 경계하기

알고리즘 26

백준 #10819 - 차이를 최대로

순열을 이용하면 쉽게 풀 수 있는 문제, itertools를 사용하자! 하나의 순열 뽑아서 쭉 식대로 더하는 작업을 순열마다 수행하고 그 중 가장 큰 값을 갖는 것을 출력해주면 된다. from itertools import permutations n = int(input()) arr = permutations(list(map(int, input().split(' ')))) ans = 0 for a in arr: sums = 0 for i in range(n-1): sums+=abs(a[i]-a[i+1]) ans = max(ans, sums) print(ans)

백준 #13913 - 숨바꼭질4

이전 숨바꼭질 문제와 다른 점은 어떻게 이동해야하는지 이동경로를 공백으로 구분해서 출력해야한다. path배열에 next step번째에다가 현재 step을 저장해두고 나중에 역추적해서 출력해주면 된다. from collections import deque N, K = map(int, input().split()) q = deque() q.append(N) time = [0 for _ in range(100001)] path = [0 for _ in range(100001)] ans = [] while q: v = q.popleft() if v == K: print(time[v]) ans.append(str(K)) while v!= N: ans.append(str(path[v])) v = path[v] an..

백준 #10828 - 덱 python

큐 문제와 마찬가지로 스택 문제 코드 가져와서 변형함 2019/10/19 - [Study/Algorithm] - 백준 #10845 - 큐 python 백준 #10845 - 큐 python 스택 코드 가져와서 조건에 맞게 조금씩 변경함. instruction = int(input()) queue = [] ins = {} for i in range(instruction): ins[i] = input().split(' ') for i in range(instruction): if ins[i][0] == 'pu.. whereisend.tistory.com 2019/10/19 - [Study/Algorithm] - 백준 #10828 - 스택 python 백준 #10828 - 스택 python instruction..

백준 #17298 - 오큰수 python

stack은 index가 저장됨 seq에 저장된 숫자끼리 비교하면서 옆 숫자가 크면 ans에 넣고 index도 바뀜 무턱대고 배열 내 숫자 전체를 다 비교하면 시간 초과 발생하기 때문에 비교를 해야 하는 경우에만 루프를 돌도록 해야 한다. import sys N = int(sys.stdin.readline()) seq = list(map(int, sys.stdin.readline().split())) stack = [] ans = [-1 for _ in range(N)] stack.append(0) i = 1 while stack and i < N: while stack and seq[stack[-1]] < seq[i]: ans[stack[-1]] = seq[i] stack.pop() stack.appe..