목록Algorithm/백준 (224)
Hanbit the Developer
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..
https://www.acmicpc.net/problem/2467 2467번: 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 - www.acmicpc.net import sys input = sys.stdin.readline def getMinAbsIndices(): left, right = 0, N-1 minAbsSum = 2000000001 minAbsIndices = [-1, -1] while left < right: curSum = nums[left] + nums[right] curAbsSum = abs(curSum) if minAbsSu..
https://www.acmicpc.net/problem/2239 2239번: 스도쿠 스도쿠는 매우 간단한 숫자 퍼즐이다. 9×9 크기의 보드가 있을 때, 각 행과 각 열, 그리고 9개의 3×3 크기의 보드에 1부터 9까지의 숫자가 중복 없이 나타나도록 보드를 채우면 된다. 예를 들어 다 www.acmicpc.net import sys input = sys.stdin.readline def getZeroPositions(): zeroPositions = [] for i in range(9): for j in range(9): if nums[i][j] == 0: zeroPositions.append((i, j)) return zeroPositions def dfs(zeroIndex): if zeroLength
https://www.acmicpc.net/problem/2166 import sys input = sys.stdin.readline def getPolygonArea(): polygonArea = 0 x0, y0 = x[0], y[0] for i in range(1, N-1): polygonArea += ( (x[i] - x0) * (y[i+1] - y0) - (x[i+1] - x0) * (y[i] - y0) ) / 2 return abs(polygonArea) if __name__ == '__main__': N = int(input()) x, y = [], [] for _ in range(N): curX, curY = list(map(int, input().split())) x.append(curX)..
https://www.acmicpc.net/problem/2098 2098번: 외판원 순회 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 16) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j www.acmicpc.net import sys input = sys.stdin.readline def getMinCost(index, isVisited): # Base Case # 모든 곳을 방문했을 경우 if isVisited == MAX_BINARY: if W[index][START_INDEX] != 0: return W[index][START_INDEX] else: return I..