목록Algorithm/백준 (224)
Hanbit the Developer
https://www.acmicpc.net/problem/1911 1911번: 흙길 보수하기 어젯밤 겨울 캠프 장소에서 월드 본원까지 이어지는, 흙으로 된 비밀길 위에 폭우가 내려서 N (1
https://www.acmicpc.net/problem/2141 2141번: 우체국 첫째 줄에 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 X[1] A[1], X[2] A[2], …, X[N] A[N]이 주어진다. 범위는 |X[i]|≤1,000,000,000, 0≤A[i]≤1,000,000,000 이며 모든 입력은 정수이다. www.acmicpc.net import sys input = sys.stdin.readline N = int(input()) postOffice = [list(map(int, input().split())) for _ in range(N)] postOffice.sort(key=lambda x: x[0]) mid = round(sum(p for _, p in post..
https://www.acmicpc.net/problem/2012 2012번: 등수 매기기 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다. www.acmicpc.net import sys input = sys.stdin.readline N = int(input()) scores = sorted([int(input()) for _ in range(N)]) print(sum(abs(scores[i]-(i+1)) for i in range(N))) 등수의 중복이 없으므로, 내림차순으로 정렬하고, i에 대해 for문을 돌면서 scores[i]와 i+1의 차이를 합해주면 답이 ..
https://www.acmicpc.net/problem/1082 import sys input = sys.stdin.readline def getNumbersWithMaxDigit(): global money numbersWithMaxDigit = [] # 0 제외한 숫자들 중에 가장 싼 것으로 첫자리 결정 minCost, minIndex = getMinCostAndIndex(costs[1:10]) if money - minCost < 0: return [] money -= minCost numbersWithMaxDigit.append(minIndex+1) # 가장 싼 것으로 남은 자리들 결정 minCost, minIndex = getMinCostAndIndex(costs) while money-min..
https://www.acmicpc.net/problem/2812 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net import sys input = sys.stdin.readline # p 이전 숫자들 중에 -1이 아닌 것이 있다면 해당 인덱스를 받아옴 def getPreviousNumberIndex(p, numberList): p -= 1 while p >= 0: if numberList[p] == -1: p -= 1 else: return p return -1 def getRemovedMaxNumberList(numberList): kCount = 0 p, n = 0, 1 # 앞에서..
https://www.acmicpc.net/problem/12970 12970번: AB 첫째 줄에 문제의 조건을 만족하는 문자열 S를 출력한다. 가능한 S가 여러 가지라면, 아무거나 출력한다. 만약, 그러한 S가 존재하지 않는 경우에는 -1을 출력한다. www.acmicpc.net import sys input = sys.stdin.readline def getStr(N, K): curStr = ['B']*N aCount = 0 curK = 0 lastAIndex = -1 while curK < K: if lastAIndex AABBBB 순서로 흘러간다. 그러면 문자열이 변화할 때 2가지의 패턴을 가진다. 첫째는 A를 앞으로 밀어내는 식, 두번째는 A를 하나 추가하는 것이다. 이제 후자의 패턴을 분석해보..
https://www.acmicpc.net/problem/1080 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net import sys input = sys.stdin.readline def convertMatrix(x, y): if not (0
https://www.acmicpc.net/problem/2138 2138번: 전구와 스위치 N개의 스위치와 N개의 전구가 있다. 각각의 전구는 켜져 있는(1) 상태와 꺼져 있는 (0) 상태 중 하나의 상태를 가진다. i(1
https://www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net import sys input = sys.stdin.readline def getBlankPositions(): blankPositions = [] for i in range(9): for j in range(9): if board[i][j] == 0: blankPositions.append([i, j]) return blankPositions def dfs(blankIndex): global b..
https://www.acmicpc.net/problem/1005 1005번: ACM Craft 첫째 줄에는 테스트케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 건물의 개수 N 과 건물간의 건설순서규칙의 총 개수 K이 주어진다. (건물의 번호는 1번부 www.acmicpc.net import sys input = sys.stdin.readline def dfs(building, depth): global buildingsOnDepth if buildingsOnDepth.get(depth): if building in buildingsOnDepth[depth]: return buildingsOnDepth[depth].add(building) else: buildings..