목록코딩 테스트/백준 문제 풀이 (105)
공부 기록장
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..
https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 코드 import sys input = sys.stdin.readline INF = int(1e9) # 노드 간선 개수 입력 받기 n = int(input()) m = int(input()) # 2차원 리스트로 그래프 표현 graph = [[INF] * (n+1) for _ in range(n+1)] for a in range(1, n+1): for b in range(1, n+1): if a =..