[백준][파이썬] 11057 오르막 수 쉬운 계단 수 문제와 거의 동일한 문제다. N = int(input()) #각 수마다 10개씩 값을 갖는다 dp = [[0 for i in range(10)] for j in range(1001)] #첫 시행 초기화 for i in range(0,10): dp[1][i] = 1 #점화식 규칙 for i in range(2,N+1): for j in range(10): tmp = 0 for k in range(j+1): tmp += dp[i-1][k] dp[i][j] = tmp print(sum(dp[N]) % 10007) 2020. 7. 28. [백준][파이썬] 10844 쉬운 계단 수 DP는 결국 점화식을 찾고 점화식을 어떻게 배열에 저장해줄지 결정하면 된다. N = int(input()) #각 수마다 10개씩 값을 갖는다 dp = [[0 for i in range(10)] for j in range(101)] #첫 시행 초기화 for i in range(1,10): dp[1][i] = 1 #카운팅 0, 9,1~8 은 규칙이 다른것을 생각하자 for i in range(2,N+1): for j in range(10): if j == 0: dp[i][j] = dp[i-1][1] elif j == 9: dp[i][j] = dp[i-1][8] else: dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1] print(sum(dp[N]) % 1000000000) https:/.. 2020. 7. 28. [백준][파이썬] 1,2,3 더하기 규칙을 찾는 연습을 잘하자.. 규칙을 논리적으로 찾을 수 있다면 좋다. 하지만 그것이 어려울 경우에는 무조건 숫자를 나열해보면서 찾는 것도 하나의 방법이다. case = int(input()) for _ in range(case): num = int(input()) numlist = [1,2,4] for i in range(3,num): tem = numlist[-1]+numlist[-2]+numlist[-3] numlist.append(tem) print(numlist[num-1]) 2020. 7. 21. [파이썬][알고리즘] 11727 2Xn 타일링 2 num = int(input()) numlist= [3,5] for i in range(2,num-1): tem1 = i-2 tem2 = i-1 tem = 2*numlist[tem1]+numlist[tem2] numlist.append(tem%10007) if num == 2: print(3) elif num == 1: print(1) else: print(numlist[-1]) 규칙을 이해하면 쉽다. 2020. 7. 21. [백준][파이썬] 11726 2Xn 타일링 num = int(input()) numlist= [2,3] for i in range(2,num-1): tem1 = i-2 tem2 = i-1 tem = numlist[tem1]+numlist[tem2] numlist.append(tem%10007) if num == 2: print(2) elif num == 1: print(0) else: print(numlist[-1]) 다이나믹 프로그래밍 문제이다. 피보나치 수열이지만, 문제를 보고 바로 피보나치 수열이라는것을 파악하진 못했다. 결국 다이나믹 프로그래밍 문제는 규칙을 찾는것이 중요하다. 메모리를 아끼려면, 리스트에 저장을 안하고 구해도 괜찮을것 같다. 중요한점은 10007을 매번 나눠주어야 한다는 것이다. num ==1일때 print(1)로 해야한다. 2020. 7. 21. [백준][파이썬] 1463번 1로 만들기 다이나믹 프로그래밍의 기본 문제다. 핵심은 "한번만 연산" 한다는 것이다. 탐색이나 bf 로도 풀 수 있겠지만 문제 특성상 반복되는 부분이 많고 이러한 반복되는 부분을 중복 계산 하지 않기 위해서 다이나믹 프로그래밍을 한다. cnt리스트에 100000을 붙인 이유는 나누기3 나누기2 마이너스1 중에서 해당사항이 없는 요소는 min에 값이 포함시키지 않기 위해서이다. 너무 오랜만에 파이썬으로 풀어서 문법이 헷갈릴 정도였다. 시험도 끝났으니 앞으로 매일 1~2문제씩은 꾸준히 열심히 푸는것을 목표로 해야겠다. num = int(input()) cnt = [100000] + [0 for i in range(num)] for i in range(2,num+1): div3 = 0 div2 = 0 if i % 3 =.. 2020. 7. 19. [Bus Classification] ③ 실험 1 busornot (binary classification) Busornot 실험은 버스가 왔는지 안왔는지를 구별하는 실험이다. 거리에 대한 정보는 빠져있으며, 약 5000장 정도의 데이터를 test validation train으로 나눠서 진행했다. 95%정도의 결과물은 사람이 구별했을 때 더 좋은 성능을 기록할 수 있기에 좋은 수치는 아니라고 생각한다. 2020. 7. 12. [케라스 실습] MNIST CNN신경망 다뤄보기 여기 내용까지 지난번에 했던 과제를 올리느라 png파일 입니다. 다음 부터는 코드를 쉽게 볼 수 있도록 정리하려고 노력해보겠습니다. 2020. 7. 4. [SW테스트 기출][파이썬] 13458 시험감독 브론즈2 로 아마 역량테스트 중에 가장 쉬운 문제일것같다. 하지만.. 시간초과 가 났다. while문 대신 나누기로 바꿔서 해결했다. num = int(input()) nums = list(map(int,input().split())) b, c = map(int,input().split()) count = 0 for i in nums: count +=1 mans = i - b if mans >0: if mans % c == 0: count += mans//c else: count += (mans//c)+1 print(count) 2020. 5. 2. 이전 1 2 3 4 5 6 ··· 8 다음