목록Algorithm (236)
HTD

https://www.acmicpc.net/problem/2448 2448번: 별 찍기 - 11 첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수) www.acmicpc.net import sys input = sys.stdin.readline def printStar(N): curStar = [ " * ", " * * ", "***** "] curLen = 3 while curLen < N: for i in range(curLen): curStar.append(curStar[i]*2) curStar[i] = " "*curLen + curStar[i] + " "*curLen curLen *= 2 for s in curSta..
https://www.acmicpc.net/problem/1916 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net import sys import heapq input = sys.stdin.readline def getMinTime(start, end): todo = [(start, 0)] dist = [float('inf')]*(N+1) dist[start] = 0 while todo: curNode, curDist = heapq.heappop(todo) if curDist..

https://www.acmicpc.net/problem/1504 import sys import heapq input = sys.stdin.readline def djikstra(start): dp = {i: float('inf') for i in range(1, N + 1)} dp[start] = 0 todo = [(start, 0)] while todo: curNode, curDist = heapq.heappop(todo) if dp[curNode] nextDist: dp[b] = nextDist heapq.heappush(todo, (b, nextDis..

https://www.acmicpc.net/problem/1305 1305번: 광고 세준이는 길 한가운데에서 전광판을 쳐다보고 있었다. 전광판에는 광고가 흘러나오고 있었다. 한참을 전광판을 쳐다본 세준이는 이 광고가 의미하는 것이 무엇인지 궁금해지기 시작했다. 전광 www.acmicpc.net import sys input = sys.stdin.readline def getMinPossibleLength(string): length = len(string) pi = [0]*(length) j = 0 for i in range(1, length): while j > 0 and string[i] != string[j]: j = pi[j - 1] if string[i] == string[j]: j += 1 p..

https://www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net import sys input = sys.stdin.readline INF = 100*1000+1 def dijkstra(start, graph): dp = [INF]*(N+1) dp[start] = 0 todo = [(start, 0)] while todo: curNode, curTime = todo.pop(0) if curTime > dp[curNode]: con..
https://www.acmicpc.net/problem/1043 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net import sys input = sys.stdin.readline def visitPartyKnowledgeablePeoplepartyToAttend(): for ppl in range(1, N+1): if isPeopleKnowledgeable[ppl] == True: for pty in partyToAttend[ppl]: if isPartyKnowledgeable[pty] == False: setIsP..

https://www.acmicpc.net/problem/1893 1893번: 시저 암호 암호학에서, 시저 암호(또는 시프트 암호, 시저 코드, 시저 시프트)는 가장 간단하면서 많이 알려진 암호화 기술 중 하나이다. "시저 암호"라는 이름은 비밀 통신을 위해 이 방법을 개발한 율리 www.acmicpc.net import sys input = sys.stdin.readline def getPi(keyword): keywordLength = len(keyword) pi = [0]*keywordLength j = 0 for i in range(1, keywordLength): while j > 0 and keyword[i] != keyword[j]: j = pi[j-1] if keyword[i] == key..

https://www.acmicpc.net/problem/9328 9328번: 열쇠 상근이는 1층 빌딩에 침입해 매우 중요한 문서를 훔쳐오려고 한다. 상근이가 가지고 있는 평면도에는 문서의 위치가 모두 나타나 있다. 빌딩의 문은 모두 잠겨있기 때문에, 문을 열려면 열쇠가 www.acmicpc.net import sys input = sys.stdin.readline dx = [1, -1, 0, 0] dy = [0, 0, -1, 1] def setIsDoorAvailable(keys): if keys != "0": for c in keys: isDoorAvailable[convertAlphabetToNumber(c)] = True def setAvailableDocumentCount(): outerPosi..

https://www.acmicpc.net/problem/2623 2623번: 음악프로그램 첫째 줄에는 가수의 수 N과 보조 PD의 수 M이 주어진다. 가수는 번호 1, 2,…,N 으로 표시한다. 둘째 줄부터 각 보조 PD가 정한 순서들이 한 줄에 하나씩 나온다. 각 줄의 맨 앞에는 보조 PD가 담당한 www.acmicpc.net import sys input = sys.stdin.readline def solution(): # input / set childs childs = [[] for _ in range(N+1)] for _ in range(M): curNums = list(map(int, input().split())) curLen = curNums[0] if curLen >= 2: for i ..

https://www.acmicpc.net/problem/2473 2473번: 세 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 www.acmicpc.net import sys input = sys.stdin.readline INF = 3000000000 def getMinAbsFluids(): minAbsSum = INF minAbsFluids = [0, 0, 0] for i in range(N-2): left, right = i + 1, N - 1 while left < right: curSum = fluids[i] + flu..