목록Algorithm (236)
HTD
import sys input = sys.stdin.readline def dfs(idx, cnt): global maxCntReadable if cnt == K-5: # Base Case cntReadable = 0 for word in words: isReadable = True for c in word: if isLearned[ord(c)-ord('a')] == False: isReadable = False break if isReadable: cntReadable += 1 maxCntReadable = max(maxCntReadable, cntReadable) return for i in range(idx, 26): # Recursive Case if isLearned[i] == False: is..
www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net import sys input = sys.stdin.readline def getNextPos(x, y): global isVisited RET = [] dx = [-1, -2, -2, -1, 1, 2, 2, 1] dy = [-2, -1, 1, 2, 2, 1, -1, -2] for i in range(8): curX, curY = x+dx[i], y+dy[i] if 0
import sys input = sys.stdin.readline T = int(input()) for _ in range(T): K = int(input()) heap = [] nums = [0]+list(map(int, input().split())) sums = [0]*(K+1) for i in range(1, K+1): sums[i] = sums[i-1]+nums[i] dp = [[0]*(K+1) for _ in range(K+1)] for i in range(2, K+1): # 길이 for j in range(1, K+2-i): # 시작지점..K-1~0 dp[j][j+i-1] = min([dp[j][j+k]+dp[j+k+1][j+i-1] for k in range(i-1)]) + (sums[j..
import sys input = sys.stdin.readline N, K = map(int, input().split()) coins = [] for _ in range(N): coins.append(int(input())) RET = 0 curMoney = K while curMoney > 0: curMaxCoin = coins.pop() RET += curMoney // curMaxCoin curMoney = curMoney % curMaxCoin print(RET) 최댓값을 꺼내서 RET, curMoney에 각각 연산해준다. 여기서 RET의 연산은 curMoney보다 curMaxCoin이 크면 0을 반환할 것이고, curMoney는 그대로일 것이다. 따라서 curMaxCoin이 curMoney ..
www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net import sys input = sys.stdin.readline nums = list(map(int, input().strip())) nums.sort(reverse=True) for num in nums: print(num, end="")
www.acmicpc.net/problem/2468 import sys sys.setrecursionlimit(20000) input = sys.stdin.readline N = int(input()) Map = [] for _ in range(N): Map.append(list(map(int, input().split()))) stateMap = None def getSafeZone(h): global stateMap stateMap = [[0]*N for _ in range(N)] cntSafeZone = 0 for i in range(N): for j in range(N): if Map[i][j] > h and stateMap[i][j] == 0: cntSafeZone += 1 dfs(i, j, h..
www.acmicpc.net/problem/1516 import sys input = sys.stdin.readline N = int(input()) buildTimes = [-1 for _ in range(N+1)] prevBuild = {i: [] for i in range(N+1)} realBuildTimes = [-1 for _ in range(N+1)] def getBuildTime(index): global realBuildTimes RET = buildTimes[index] for cur in prevBuild[index]: if realBuildTimes[cur] != -1: RET = max(RET, buildTimes[index]+realBuildTimes[cur]) else: RET ..
import heapq import sys input = sys.stdin.readline N = int(input()) S, T = 0, 1 # define times = [] for _ in range(N): times.append(list(map(int, input().split()))) times.sort(key=lambda x: x[0]) queue = [] heapq.heappush(queue, times[0][T]) for i in range(1, N): if times[i][S] >= queue[0]: heapq.heappop(queue) heapq.heappush(queue, times[i][T]) else: heapq.heappush(queue, times[i][T]) print(len..
www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마 www.acmicpc.net while True: strCur = input() if strCur == ".": break isBalanced = True stack = [-1] for c in strCur: if c in '([': stack.append(c) elif c == ')': if stack[-1] == ')': del stack[-1] else: isBalanced = False break elif c == '..