본문 바로가기
728x90

브루트 포스4

[python] 백준 2635 수 이어가기 https://www.acmicpc.net/problem/2635 2635번: 수 이어가기 첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다. www.acmicpc.net 문제 해결 첫 번째 수가 주어지고 두 번째수는 첫번째 수 이하인 부분들을 반복해나가면서 최적의 수를 찾아야한다. 사실 재귀를 사용해서 최대 길이를 찾는 것은 어렵지 않다. 하지만 문제를 잘 읽어야하는게 이후 나오는 수들은 0이여도 상관이 없다는 것이다.(음이 아닌 수이기 때문) 문제 난이도는 쉬운 편 CODE import sys input = sys.stdin.readline def dfs(A:list): global target, ans if A[-2] - A[-1] >= 0: A.append(A[-2] .. 2024. 4. 18.
[python] 백준 14225 부분수열의 합 https://www.acmicpc.net/problem/14225 14225번: 부분수열의 합 수열 S가 주어졌을 때, 수열 S의 부분 수열의 합으로 나올 수 없는 가장 작은 자연수를 구하는 프로그램을 작성하시오. 예를 들어, S = [5, 1, 2]인 경우에 1, 2, 3(=1+2), 5, 6(=1+5), 7(=2+5), 8(=1+2+5)을 만들 www.acmicpc.net 문제 해결 중간에 빠진 수를 어떻게 구할 것인가?: 우선은 sort()를 통해 작은수부터 놓는 것이 우선일 것이다. 맨 앞의 수는 1일 것이다. 두 번째 수는 2가 와도 되고 1이 추가로 와도 된다. 두 번째 수가 1이면 세 번째는 3이하의 수가 올 것이다. (1, 2, 3 모두 가능하다는 것이다.) 두 번째 수가 2이면 세 번째.. 2023. 2. 10.
[python] 백준 1182 부분수열의 합 https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 문제 해결 ●리스트 안의 숫자가 매우 다양하고 주어지는 수열이 특징은 알 수 없으므로 모든 경우의 수를 다 계산해 봐야 할 것이다. ●부분수열의 합을 알아야 하기 때문에 부분수열의 순서는 상관이 없다. 따라서 i개(i>0)를 순서없이 뽑았을 때 합이 s가 되면 답을 +1을 해주면 된다. CODE import sys input = sys.stdin.readline.. 2023. 1. 19.
[python] 백준 14501 퇴사 https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 문제 해결 i번째 일의 상담을 했을 때 k일이 걸린다면 i+k-1일까지는 상담을 못한다. 따라서 i+k일의 상담부터 할 수 있다. i+k일의 상담을 할 수 있어도 만족스럽지 않으면 안하고 i+k+1일로 넘어갈 수 있다. 상담은 n일 까지 끝내야 하므로 주의한다. (아래 코드는 0일부터 n-1일로 했다. 그러므로 이해할 때 -1일을 더하면 된다.) CODE import sys input = sys.stdin.readline n = int(input()) schedule = [list(map(int, input().split())) fo.. 2023. 1. 15.
728x90