목록전체 글 (145)
공부 기록장
https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 코드 n, m = map(int, input().split()) board = [] for i in range(n): board.append(input()) result = [] for i in range(n - 7): for j in range(m - 7): c1 = 0 c2 = 0 for k in range(i, i + 8): for l in range(j, j + 8): if (k +..
https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 코드 n = int(input()) result = 0 for num in range(1, 1000001): gen = num nn = num while nn > 0: x = nn % 10 nn //= 10 gen += x if gen == n: result = num break print(result) 처음의 풀이는 위와 같이 각 자리 수의 합을 구하는 과정을 반복문..
https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 코드 및 설명 n, m = map(int, input().split()) card = list(map(int, input().split())) total = 0 result = 0 for i in range(n): for j in range(i+1, n): for k in range(j+1, n): total = card[i] + card[j] + card[k] i..
https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 코드 import heapq, sys input = sys.stdin.readline INF = int(1e9) def dijkstra(start): q = [] heapq.heappush(q, (0, start)) distance[start] = 0 while q: dist, now = heapq.heappop(q) if distance[now] < dist..