[백준][파이썬] 11053 가장 긴 증가하는 부분 수열 아래의 블로그를 참고했다. 앞에있는 숫자중 나보다 작은 수들중 길이가 최고인것의 +1 ... num = int(input()) numlist = list(map(int,input().split())) dp = [0 for i in range(num)] for i in range(num): for j in range(i): if numlist[i] > numlist[j] and dp[i] 2020. 8. 3. [LSTM] 시계열 데이터셋을 활용한 기온 예측 문제 1. 문제 정의 & 데이터 다운 -독일 예나 시에 있는 막스 플랑크 생물지구화학 연구소의 지상 관측소 수집 데이터 -14개의 관측치 데이터가 10분마다 기록되어 있음(2009~2016 데이터를 활용) #데이터 살펴보기 import os data_dir = 'C:/Users/82109/Desktop/example' #다운받은 폴더 경로 설정 fname = os.path.join(data_dir, 'jena_climate_2009_2016.csv') #파일 경로 설정 f = open(fname) # r, w, a 모드가 존재 data = f.read() f.close() print(type(data)) #str 형식으로 데이터가 저장되어 있다. #CSV 파일 형식 행은 "콤마" 로 열을 "\n"으로 나눠서 .. 2020. 7. 29. [백준][파이썬] 2193번 이친수 규칙은 N-2번째까지의 합 + N0000 의 경우의 수를 합친것이였다. N = int(input()) #담을 공간 생성 numlist = [0 for i in range(91)] #초기값 설정 numlist[1] = 1 numlist[2] = 1 numlist[3] = 2 #규칙 찾기 for i in range(4,N+1): tem = 0 for j in range(i-1): tem += numlist[j] numlist[i] = tem+1 print(numlist[N]) 2020. 7. 28. [백준][파이썬] 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. [Pandas] 기본 문법 1. Dataframe, series? import pandas as pd list_tmp = [1,2,3] #리스트를 통해 시리즈 생성 s1 = pd.core.series.Series([1,2,3]) s2 = pd.core.series.Series(['one','two','three']) #데이터 프레임 생성 pd.DataFrame(data = dict(num=s1,word=s2)) DataFrame - 2차원 시리즈 - 각각의 콜롬 2. csv 파일 읽어오기 import pandas as pd df = pd.read_csv('desktop/name.csv') print(df) #전체 출력 df.head(2) #앞에서 부터 보여주기 df.tail(3) #뒤에서 부터 보여주기 # 콤마가 아닌 TAP으로 .. 2020. 7. 26. [백준][파이썬] 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. 이전 1 2 3 4 5 6 ··· 10 다음