본문 바로가기

코딩 테스트30

백준 1504번 : 특정한 최단 경로 (Python) 출처 : https://www.acmicpc.net/problem/1504 import heapq # import sys # input = sys.stdin.readline n, e = map(int, input().split()) graph = [[] for _ in range(n + 1)] for _ in range(e) : a, b, c = map(int, input().split()) graph[a].append((b, c)) graph[b].append((a, c)) # graph = [[], # [(2, 3), (3, 5), (4, 4)], # [(1, 3), (3, 3), (4, 5)], # [(2, 3), (4, 1), (1, 5)], # [(3, 1), (2, 5), (1, 4)]] v1.. 2023. 1. 2.
백준 11057 : 오르막 수 (Python) 출처 : https://www.acmicpc.net/problem/11057 n = int(input()) dp = [[0] * 10 for _ in range(n + 1)] dp[1] = [1] * 10 for i in range(2, n + 1) : for j in range(10) : dp[i][j] = sum(dp[i - 1][:j + 1]) print(sum(dp[-1]) % 10007) n자리의 오르막 수를 가정하면, 마지막 자리수가 0인 오르막 수는 마지막 자리수가 0인 n-1 자리의 오르막 수의 개수와 같다. 마지막 자리수가 1인 오르막 수는 마지막 자리수가 0, 1인 n-1 자리의 오르막 수의 개수의 합과 같다. 반복하면, 마지막 자리수가 9인 오르막 수는 마지막 자리수가 0~9인인 n-.. 2022. 12. 31.
백준 15649, 15650 : N과 M (1), (2) (Python) N과 M (1) 출처 : https://www.acmicpc.net/problem/15649 # 순열 n, m = map(int, input().split()) sol = list() visited = [0] * (n+1) def permute(n, m) : if len(sol) == m : print(*sol) return for i in range(1, n+1) : if visited[i] == 0 : sol.append(i) visited[i] = 1 permute(n, m) sol.pop() visited[i] = 0 permute(n, m) N과 M (2) 출처 : https://www.acmicpc.net/problem/156450 # 조합 n, m = map(int, input().split.. 2022. 12. 26.
백준 1463번 : 1로 만들기 (Python) 출처 : https://www.acmicpc.net/problem/1463 n = int(input()) sols = [0] * (n+1) for i in range(2, n+1) : # 1 빼기 sols[i] = sols[i-1] + 1 # 2로 나눌 수 있으면 i//2 비교 if i % 2 == 0 : sols[i] = min(sols[i//2] + 1, sols[i]) # 3으로 나눌 수 있으면 i//3 비교 if i % 3 == 0 : sols[i] = min(sols[i//3] + 1, sols[i]) print(sols[-1]) 이 문제는 1부터 시작해서 1을 더하거나, 2를 곱하거나, 3을 곱해서 n까지 최소 회수로 도달하는 문제와 완전히 동일하다. 주어진 n에 대해 답을 구하는 함수를 $f.. 2022. 12. 15.