 [DP] DP 간단한 문제 백준 1, 2, 3 더하기 풀기
					[DP] 1, 2, 3 더하기 문제 정수 4를 1,2,3의 합으로 나타내는 방법은 총 7가지가 있습니다. 합을 나타낼 때 수를 1개 이상 사용해야합니다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1,2,3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 테스트 케이스마다, n을 1,2,3의 합으로 나타내는 방법의 수를 출력한다. 예제 입력 3 4 7 10 예제 출력 7 44 274 풀이 방법 먼저 1을 더할때는 구하는 방식이 1 하나밖에 없으므로 dp[0] = 1로 저장합니다. ..
				
						2021. 1. 19.
						
					
					[DP] DP 간단한 문제 백준 1, 2, 3 더하기 풀기
					[DP] 1, 2, 3 더하기 문제 정수 4를 1,2,3의 합으로 나타내는 방법은 총 7가지가 있습니다. 합을 나타낼 때 수를 1개 이상 사용해야합니다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1,2,3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 테스트 케이스마다, n을 1,2,3의 합으로 나타내는 방법의 수를 출력한다. 예제 입력 3 4 7 10 예제 출력 7 44 274 풀이 방법 먼저 1을 더할때는 구하는 방식이 1 하나밖에 없으므로 dp[0] = 1로 저장합니다. ..
				
						2021. 1. 19.
					
				
			 
		
		
		
	
	
                
            
                
		
		
			
				
					
						
							 key와 lambda를 이용한 정렬
					리스트를 보면 [[키,값],[이름,점수],[상품,가격],[단어(단어길이]] 이런 식으로 된 값들을 정렬하라는 문제들을 확인 할 수 있습니다. 하지만 파이썬을 이용하면 이러한 문제들은 key와 lambda를 이용해서 아주 쉽게 해결할 수 있습니다. 먼저 처음 예시는 간단하게 과일을 이름순으로 정렬하고 그다음 가격이 낮은 순으로 정렬하겠습니다. 먼저 과일의 값들은 아래와 같습니다. data = [ ["고구마",25000], ["바나나",123232], ["파인애플",4500], ["감자",3000], ["금귤",6000] ] 가격을 기준으로 정렬하겠습니다. data.sort(key = lambda x:x[1]) print(data) ## 출력 값 #[['감자', 3000], ['파인애플', 4500], ['..
				
						2020. 10. 20.
						
					
					key와 lambda를 이용한 정렬
					리스트를 보면 [[키,값],[이름,점수],[상품,가격],[단어(단어길이]] 이런 식으로 된 값들을 정렬하라는 문제들을 확인 할 수 있습니다. 하지만 파이썬을 이용하면 이러한 문제들은 key와 lambda를 이용해서 아주 쉽게 해결할 수 있습니다. 먼저 처음 예시는 간단하게 과일을 이름순으로 정렬하고 그다음 가격이 낮은 순으로 정렬하겠습니다. 먼저 과일의 값들은 아래와 같습니다. data = [ ["고구마",25000], ["바나나",123232], ["파인애플",4500], ["감자",3000], ["금귤",6000] ] 가격을 기준으로 정렬하겠습니다. data.sort(key = lambda x:x[1]) print(data) ## 출력 값 #[['감자', 3000], ['파인애플', 4500], ['..
				
						2020. 10. 20.
					
				
			 
		
		
		
	
	
                
            
                
		
		
			
				
					
						
							 최장 증가 부분 수열(LIS)-개념
					최장 증가 부분 수열 문제는 동적 계획법(DP)로도 풀 수 있는 유명한 알고리즘 문제입니다. 최장 증가 부분 수열 정의 어떤 임의의 수열이 주어질 때, 이 수열에서 몇개의 수들을 제거해서 부분수열을 만들 수 있습니다. 이때 만들어진 부분수열 중 오름차순으로 정렬된 가장 긴 수열을 최장 증가 부분 수열이라고 합니다. 먼저 예시를 들겠습니다. [2,11,4,55,7,9,13,3] 이라는 수열이 있습니다. 이제 이것을 최장 증가 부분 수열로 정리 하겠습니다. 11 제거 [2,4,55,7,9,13,3] 55제거 [2,4,7,9,13,3] 3제거 [2,4,7,9,13] 이렇게 LIS가 나올수 있는데 한 수열 내에서 여러개의 LIS가 나올수 있습니다. 먼저 O(N^2) 알고리즘에 대해서 설명하겠습니다. O(N^2)..
				
						2020. 10. 6.
						
					
					최장 증가 부분 수열(LIS)-개념
					최장 증가 부분 수열 문제는 동적 계획법(DP)로도 풀 수 있는 유명한 알고리즘 문제입니다. 최장 증가 부분 수열 정의 어떤 임의의 수열이 주어질 때, 이 수열에서 몇개의 수들을 제거해서 부분수열을 만들 수 있습니다. 이때 만들어진 부분수열 중 오름차순으로 정렬된 가장 긴 수열을 최장 증가 부분 수열이라고 합니다. 먼저 예시를 들겠습니다. [2,11,4,55,7,9,13,3] 이라는 수열이 있습니다. 이제 이것을 최장 증가 부분 수열로 정리 하겠습니다. 11 제거 [2,4,55,7,9,13,3] 55제거 [2,4,7,9,13,3] 3제거 [2,4,7,9,13] 이렇게 LIS가 나올수 있는데 한 수열 내에서 여러개의 LIS가 나올수 있습니다. 먼저 O(N^2) 알고리즘에 대해서 설명하겠습니다. O(N^2)..
				
						2020. 10. 6.
					
				
			 
		
		
		
	
	
                
            
                
		
		
			
		
		
		
	
	
                
            
                
		
		
			
				
					
						
							 Python list 연산에 따른 시간 복잡도
					python list 연산에 따른 시간 복잡도 시간 복잡도가 O(1)인 연산 len(a) len(a)는 리스트 전체 요소의 개수를 리턴합니다. 사용 예시는 다음과 같습니다. a = [1,2,3,4,5] print(len(a)) ## 출력값 # 5 a[i] a[i]는 리스트중에서 해당 인덱스에 해당하는 값을 가져옵니다. a = [1,2,3,4,5] print(a[3]) ## 출력 값 # 4 a.append(x) a.append(x)는 해당 리스트 맨뒤에 x를 추가해 줍니다. a = [1,2,3] print(a) a.append(4) print(a) ## 출력 값 # [1,2,3] # [1,2,3,4] a.pop() a.pop()는 해당 리스트 맨 뒤에 있는 값을 pop 해줍니다. (스택의 연산 pop) a..
				
						2020. 8. 9.
						
					
					Python list 연산에 따른 시간 복잡도
					python list 연산에 따른 시간 복잡도 시간 복잡도가 O(1)인 연산 len(a) len(a)는 리스트 전체 요소의 개수를 리턴합니다. 사용 예시는 다음과 같습니다. a = [1,2,3,4,5] print(len(a)) ## 출력값 # 5 a[i] a[i]는 리스트중에서 해당 인덱스에 해당하는 값을 가져옵니다. a = [1,2,3,4,5] print(a[3]) ## 출력 값 # 4 a.append(x) a.append(x)는 해당 리스트 맨뒤에 x를 추가해 줍니다. a = [1,2,3] print(a) a.append(4) print(a) ## 출력 값 # [1,2,3] # [1,2,3,4] a.pop() a.pop()는 해당 리스트 맨 뒤에 있는 값을 pop 해줍니다. (스택의 연산 pop) a..
				
						2020. 8. 9.