Dev/Algorithm 37

[백준] 재귀함수 사용하기

가능한 경우, 불가능한 경우, 이외의 경우 셋으로 나눠서 설계하자 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..

Dev/Algorithm 2021.03.15

[백준] 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..

Dev/Algorithm 2021.03.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..

Dev/Algorithm 2021.03.09

[백준] 나머지 연산, 최대공약수, 최소공약수

1. 나머지 연산 정답을 1000,000,007로 나눈 나머지를 출력하자. 구하는 과정에서 나눠서 계산하는 풀이. 1. 덧셈, 곱셈은 매번 나머지 연산을 수행해서 계산해도 된다. 예) (6+3) % 3 = ((6%3) + (3%3)) % 3 2. 음수일 경우 언어별로 결과가 달라진다.(나는 파이썬이니까 상관 없음) 3. 나눗셈의 경우 잘 안나오니까 일단 패스 https://www.acmicpc.net/problem/10430 더보기 A,B,C = map(int,input().split()) print(((A + B) % C)) print(((A % C) + (B % C)) % C) print(((A * B) % C)) print(((A % C) * (B % C)) % C) 2. 최대공약수 중요한 알고리즘..

Dev/Algorithm 2021.03.08

2. [프로그래머스] Level_2 큰 수 만들기 (탐욕법)

문제 설명 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24]를 만들 수 있습니다. 이 중 가장 큰 숫자는 94입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 number는 1자리 이상, 1,000,000자리 이하인 숫자입니다. k는 1 이상 number의 자릿수 미만인 자연수입니다. 입출력 예 number k return 1924 2 94 123123..

Dev/Algorithm 2020.06.09

1. [프로그래머스] Level_2 카펫 (완전탐색)

문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로길이는 세로 길이와 같거나, 세로 길이보다 깁..

Dev/Algorithm 2020.06.09