문제 https://www.acmicpc.net/problem/10451 10451번: 순열 사이클 1부터 N까지 정수 N개로 이루어진 순열을 나타내는 방법은 여러 가지가 있다. 예를 들어, 8개의 수로 이루어진 순열 (3, 2, 7, 8, 1, 4, 5, 6)을 배열을 이용해 표현하면 \(\begin{pmatrix} 1 & 2 &3&4&5&6&7&8 \\ 3 www.acmicpc.net 코드 import collections t = int(input()) queue = collections.deque() def bfs(index): queue.append(index) while queue: cur = queue.popleft() visited[cur] = True if visited[graph[cur]..
문제 https://www.acmicpc.net/problem/1389 1389번: 케빈 베이컨의 6단계 법칙 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻 www.acmicpc.net 코드 import collections import sys INF = sys.maxsize n, m = map(int, input().split()) graph = [[] for _ in range(n+1)] for i in range(m): a, b = map(int, input().split()) graph[a].append(b) graph..
문제 https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 코드 n = int(input()) dp = [0 for _ in range(90)] dp[0] = 1 dp[1] = 1 dp[2] = 2 for i in range(3, n): for j in range(i-1): # i자릿수 - 2 까지 전부 더하고 +1 dp[i] += dp[j] dp[i] += 1 print(dp[n-1]) n = 6 일때 1 0 0 0 0 0 - 6 1 0..
문제 https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 코드 n = int(input()) total = list(map(int, input().split())) dp = [0 for _ in range(n)] dp[0] = total[0] for i in range(1, n): dp[i] = max(total[i] + dp[i-1], total[i]) print(max(dp)) DP문제이고, 연속된 몇개의 수를 선택하여 가장 큰 값을 출력하는 문제이다. ..