백준 4

[백준] 1로 만들기

https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 탑다운, 바텀업 두가지 방식으로 풀긴 했는데, 탑다운 방식으로 하니까 시간초과가 났다. max_num = 10**20 def solution(n,count): global max_num if n == 1: max_num = min(max_num,count) if n % 3 == 0: solution(n//3,count+1) if n % 2 == 0: solution(n // 2, count +1) if n > 1: solution(n-1,count+1) return max_num def solution2(n):..

알고리즘/DP 2021.11.16

[백준] 브루트 포스

- 모든 경우의 수를 다 해보는 것 - 다 해보는 시간이 크진 않아야 한다. = 문제의 제한시간을 넘지는 말아야 한다. 해결 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