본문 바로가기

전체 글

(663)
050 - 순열 구하기 1부터 N까지 번호가 적힌 구슬이 있습니다.이중 M개를 뽑아 일렬로 나열하는 방법을 모두 출력합니다. ▣ 입력설명 첫 번째 줄에 자연수 N(3
049 - 동전교환 다음과 같이 여러 단위의 동전들이 주어져 있을때 거스름돈을 가장 적은 수의 동전으로 교환 해주려면 어떻게 주면 되는가? 각 단위의 동전은 무한정 쓸 수 있다. ▣ 입력설명 첫 번째 줄에는 동전의 종류개수 N(1
048 - 중복순열 구하기 1부터 N까지 번호가 적힌 구슬이 있습니다. 이 중 중복을 허락하여 M번을 뽑아 일렬로 나열 하는 방법을 모두 출력합니다. ▣ 입력설명 첫 번째 줄에 자연수 N(3
047 - 바둑이 승차(DFS) 철수는 그의 바둑이들을 데리고 시장에 가려고 한다. 그런데 그의 트럭은 C킬로그램 넘게 태 울수가 없다. 철수는 C를 넘지 않으면서 그의 바둑이들을 가장 무겁게 태우고 싶다. N마리의 바둑이와 각 바둑이의 무게 W가 주어지면, 철수가 트럭에 태울 수 있는 가장 무거운 무게를 구하는 프로그램을 작성하세요. ▣ 입력설명 첫 번째 줄에 자연수 C(1 c: return elif L == n: if sum > res: res = sum else: DFS3(L+1, sum+a[L], tsum+a[L]) DFS3(L+1, sum, tsum+a[L]) if __name__ == '__main__': c, n = map(int, input().split()) a = [int(input()) for _ in range(n..
046 - 합이 같은 부분집합(DFS) N개의 원소로 구성된 자연수 집합이 주어지면, 이 집합을 두 개의 부분집합으로 나누었을 때 두 부분집합의 원소의 합이 서로 같은 경우가 존재하면 “YES"를 출력하고, 그렇지 않으면 ”NO"를 출력하는 프로그램을 작성하세요. 둘로 나뉘는 두 부분집합은 서로소 집합이며, 두 부분집합을 합하면 입력으로 주어진 원래의 집합이 되어 합니다. 예를 들어 {1, 3, 5, 6, 7, 10}이 입력되면 {1, 3, 5, 7} = {6, 10} 으로 두 부분집합의 합이 16으로 같은 경우가 존재하는 것을 알 수 있다. ▣ 입력설명 첫 번째 줄에 자연수 N(1
045 - 부분집합 구하기(DFS) 자연수 N이 주어지면 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램 을 작성하세요. ▣ 입력설명 첫 번째 줄에 자연수 N(1
044 - 이진트리 순회(깊이우선탐색) 아래 그림과 같은 이진트리를 전위순회와 후위순회를 연습해보세요. 전위순회 출력 : 1 2 4 5 3 6 7 중위순회 출력 : 4 2 5 1 6 3 7 후위순회 출력 : 4 5 2 6 7 3 1 #import sys #sys.stdin = open('input.txt', 'rt') # 전위순회 def DFS1(n): if n > 7: return '' else: return str(n)+DFS1(2*n)+DFS1(2*n+1) # 중위순회 def DFS2(n): if n > 7: return '' else: return DFS2(2*n)+str(n)+DFS2(2*n+1) # 후위순회 def DFS3(n): if n > 7: return '' else: return DFS3(2*n)+DFS3(2*n+1)+st..
043 - 재귀함수를 이용한 이진수 출력 10진수 N이 입력되면 2진수로 변환하여 출력하는 프로그램을 작성하세요. 단 재귀함수를 이용 해서 출력해야 합니다. ▣ 입력설명 첫 번째 줄에 10진수 N(1