[Python] 백준 2805. 나무자르기
https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 문제 설명: 상근이가 얻으려는 나무의 길이 M , 나무의 수 N M을 얻기 위해 절단기로 자를 수 있느 나무의 최대 높이값을 구하는 문제 만약 4개의 나무 [20, 15, 10, 17]이 주어질때 7미터 얻으려고 할때 15미터로 설정하고 자르면 [0,0,5,2] 7미터를 얻을 수 있다. 이진탐색으로 풀 수 있지만 조금 방법을 바꿔보고 싶었다. 나무의 리스트를..
[Python] 백준 1654. 랜선 자르기
https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 문제 설명: 만약 4개의 랜선이 주어지고 11개의 랜선을 만들려고 할 때 최대 길이 갯수를 구하는 문제이다. 4개의 랜선은 예를 들면 [802, 743, 457, 539] 랜선의 길이가 주어진다. 최대 길이가 200일때 802cm 랜선에서 4개, 743cm 랜선에서 3개, 457cm 랜선에서 2개, 539cm 랜선에서 2개를 잘라내 모두 11개를 만들 수 있다. 이진탐..
[Python] 백준 9095번. 1,2,3 더하기
https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 정수 n 에 대해 1,2,3으로 합을 만들 수 있는 경우의 수를 구하는 문제이다. 여기서 주의: 1이 처음 빠진다고 해서 두번째에도 1이 들어 갈 수 있다. for문을 n이 0이 될때까지 돌려주면 된다. 반복되는 과정이기 때문에 재귀함수로 구현가능 def sum(n): def dfs(n, arr): for i in [1,2,3]: if n-i == 0: result.append(arr+[i]) return else: dfs(n-i, arr+[i]) result = [] dfs(n, []) ret..
[Python] 백준 1920. 수 찾기
https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 문제설명 [4,1,5,2,3] 입력받은 리스트가 있고 다른 리스트 [1,3,7,9,5] 가 있다고 했을 때 [4, 1, 5, 2, 3] 각각의 숫자들이 두번째 리스트에 들어있는지 확인하는 문제이다. 이 문제는 정말 쉽게 풀거라고 생각했다. n = int(input()) lst = list(map(int, input().split())) m = int..