본문 바로가기

Dev/Algorithm15

[백준] 재귀함수 사용하기 가능한 경우, 불가능한 경우, 이외의 경우 셋으로 나눠서 설계하자 1,2,3 더하기 해당 문제는 재귀를 모를 당시에는 정말 어려웠는데,, 이제는 왜 그렇게 푸는지도 이해가 되고, 어떻게 풀어야할지도 이해가 어느정도는 된다. 신기하다. 하면 할수록 느는 것인디 왜 그렇게 하기싫어했을까. https://www.acmicpc.net/problem/9095 더보기 def solution(sum, goal): ans = 0 if sum > goal:# 1. 불가능한 경우 return 0 if sum == goal:# 2. 정답인 경우 return 1 # 3. 이외의 경우 ans += solution(sum+1,goal) ans += solution(sum+2,goal) ans += solution(sum+3,go.. 2021. 3. 15.
[백준] 순열 (Permutation) 1~N까지로 이루어진 순열, 순서가 중요하다. 다음 순열 순열을 사전순으로 나열했을 때, 사전순으로 다음에 오는 순열을 찾는 방법 https://www.acmicpc.net/problem/10972 더보기 def solution(arr): i = len(arr)-1 while i>0 and arr[i-1] >= arr[i]: i -= 1 if i 2021. 3. 12.
[백준] N중 for문 N개 중, 일부를 선택해야하는 경우에 사용한다. 사용할 일이 거의 없음(10중 포문 만들어야 하기 때문에,,) 1, 2, 3 더하기 https://www.acmicpc.net/problem/9095 더보기 t = int(input()) for _ in range(t): ans = 0 n = int(input()) for l1 in range(1, 4): if l1 == n: ans += 1 for l2 in range(1, 4): if l1+l2 == n: ans += 1 for l3 in range(1, 4): if l1+l2+l3 == n: ans += 1 for l4 in range(1, 4): if l1+l2+l3+l4 == n: ans += 1 for l5 in range(1, 4): if l1.. 2021. 3. 10.
[백준] 브루트 포스 - 모든 경우의 수를 다 해보는 것 - 다 해보는 시간이 크진 않아야 한다. = 문제의 제한시간을 넘지는 말아야 한다. 해결 3단계 1. 문제의 해결 가능한 경우의 수를 어림잡아보자. 0~9999? 음.. 그럼 10^4번 하면 되겠구만.. 이정도? 2. 가능한 모든 방법을 만들어보자. for문? 순열? 재귀? ... 3. 각각의 방법을 이용해 답을 구해보자 이건 먼말인지 모르겠음. 그냥 다 해보기 일곱 난쟁이 https://www.acmicpc.net/problem/2309 더보기 def solution(arr, sum): ans = [] for i in range(len(arr)): for j in range(i,len(arr)): if sum-arr[i]-arr[j] == 100: for k in a.. 2021. 3. 9.