본문 바로가기
코테 알고리즘 다이나믹 프로그래밍 간단 이해 다이나믹 프로그래밍(dp)는 뭘까? 다이나믹 프로그래밍은 이름은 뭔가 거창하지만 개념은 간단한데 바로 최종 결과를 얻기 위해 필요한 하위 데이터를 계속 저장해서 상위 문제를 해결하는 방법이다 핵심은 하위 데이터를 계속 저장한다는 점이다 물론 이 말만 듣는다고 바로 이해하기는 어렵다 이해를 위해 예를 하나 들어보겠다 다이나믹 프로그래밍하면 무조건 따라오는 문제인 피보나치 수열을 보자 피보나치 수열은 n번째 수가 n-1과 n-2의 합인 수열이다 즉 n번째 수를 구하기 위해서는 n-1과 n-2의 정보가 필요하다 피보나치 수열을 다이나믹 프로그래밍으로 구하는 방법은 몹시 간단한데 코드는 다음과 같다 dp = [0]*n dp[0] = 1 dp[1] = 1 for i in range(2,n) : dp[i] = dp.. 2023. 11. 4.
파이썬 기초 - 딕셔너리와 관련 메소드 딕셔너리 딕셔너리는 값을 key와 value 형태로 저장하고 key값을 이용해 해당 key에 해당하는 value를 불러 올 수 있다 여기서 key는 변경 할 수 없다 딕셔너리 선언 딕셔너리는 집합과 같은 {} 를 가지고 선언한다 다만 값을 { key : value } 형태로 넣어주어야 한다는 차이점이 있다 key는 숫자,문자열,튜플이 가능하지만 리스트는 변경 가능하기 때문에 넣을 수 없다 딕셔너리 조회 딕셔너리를 조회할 때는 딕셔너리[키] 혹은 딕셔너리.get( 키, 해당 값이 없을때 표시할 값 ) 으로 조회가 가능하다 in 연산자를 활용한다면 해당 키가 있는지 확인도 가능하다 딕셔너리의 추가 변경 삭제 딕셔너리에 값을 추가 할 때는 딕셔너리[추가할 키] = 추가할 값 형태로 값을 추가하는 것이 가능하다.. 2023. 8. 15.
파이썬 기초 - 집합 집합의 특징 집합은 집합 연산을 위해 사용하는 자료형으로 중복 원소는 하나 빼고 무시되며 순서가 없어 인덱싱이 불가능하다 집합의 선언 집합을 선언할때는 {} 를 통해 선언하면 된다 혹은 set()함수를 통해 문자열이나 리스트, 튜플을 변환 할 수 있다 변환시 중복값은 하나 빼고 제외된다 예를들어 set('문문문문') 으로 선언하면 집합에는 '문' 하나만 남는다 합집합,교집합,차집합,대칭차집합 합집합은 | 연산 혹은 union()메소드 교집합은 & 연산 혹은 intersection()메소드 차집합은 - 연산 혹은 difference()메소드 대칭 차집합은 ^ 연산 혹은 symmetric_difference()메소드를 사용한다 연산은 그냥 연산 하듯 사용하면 되고 메소드는 집합.메소드(다른집합) 형태로 사용.. 2023. 8. 15.
파이썬 기초 - 튜플 이해하기 튜플과 리스트 튜플은 리스트 처럼 여러 요소를 저장 할 수 있지만 리스트와는 다르게 한 번 요소가 들어가면 해당 요소의 값을 수정하는 것이 불가능 하다 튜플의 형태 튜플은 출력하면 값이() 소괄호 안에 표시가 된다 리스트와 비교하면 1,2,3을 요소로 가진 튜플은 (1,2,3) 이 되고 리스트는[1,2,3]이 된다 튜플 선언 튜플은 다양한 방법으로 선언이 가능하다 특히 굳이 ()를 사용하지 않아도 된다 a = 1,2 b = (2,3) c = tuple('aa') 위의 값은 모두 튜플이다 튜플을 활용한 변수 연속 대입 튜플을 활용하면 변수의 값을 한 번에 넣을 수 있다 a, b, c = 2,3,'사' print(a,b,c) # 2 3 사 나머지 인덱싱과 슬라이싱, 연산은 모두 리스트와 같다 아마도 튜플을 .. 2023. 8. 15.
파이썬 리스트 관련 메소드 - count(), index(),len(),reverse(),sort() count() count(x) 메소드는 x에 해당하는 값이 리스트에 몇 개가 있는지 확인 할 때 사용한다 a = [1,2,3,1,2] print(a.count(1)) # 1이 2개이기 때문에 2가 출력 index() index(x)메소드는 x에 해당하는 값이 저장된 첫번째 인덱스를 확인 할 때 사용한다 a = [1,2,3,1,2] print(a.index(1)) # 0이 출력 *인덱스 메소드는 리스트를 첫번째 부터 확인하면서 찾는다는 것을 기억하자 len() len()은 메소드가 아니라 함수지만 따로 쓰기 애매해서 이 글에 넣었다 사용하면 리스트의 길이를 int형태로 반환한다 a = [1,2,3,1,2] print(len(a)) # 5를 반환 reverse() reverse()는 리스트의 값의 배열을 현.. 2023. 8. 15.
파이썬 리스트 수정, 추가, 삭제 인덱싱과 슬라이싱 으로 파이썬 리스트 수정 파이썬의 리스트는 문자열과 다르게 인덱싱이나 슬라이싱으로 해당 요소의 값을 변경 할 수 있다 a = [1,2,3,4,5] a[0] = 100 print(a) # [100, 2, 3, 4, 5] a[1:] = [2,3] print(a) # [100, 2, 3] 2번째 코드에서 알 수 있듯 꼭 선택한 리스트 요소 숫자에 맞춰서 대입할 리스트를 넣을 필요는 없다 요소 추가 메소드 - append(), insert() , extend() 리스트 맨 뒤에 요소를 추가할때는 append(),extend() 메소드를 사용하고 중간에 추가할때는 insert() 메소드를 사용한다 append 활용 a = [1,2,3,4,5] a.append(1) print(a) #[1, 2, .. 2023. 8. 15.
파이썬 리스트 range(), 인덱싱, 슬라이싱, 연산 리스트형 리스트는 요소를 [] 형태로 저장한다 리스트 안에는 모든 것이 들어갈 수 있으며 리스트안에 리스트를 넣는것도 가능하다 range()함수로 리스트 만들기 range()함수는 (a:b:c) 형태로 값을 받는다 a는 시작 숫자, b는 끝 숫자+1, c는 규칙 range() 함수로 리스트를 만들때는 list(range())형태로 리스트를 만들면 된다 리스트 인덱싱 리스트는 개별 요소가 0부터 시작하여 인덱스가 정해진다 역순 인덱스는 -1 부터 시작한다 [1,2,3,4] 1 2 3 4 0 1 2 3 -4 -3 -2 -1 변수[a] 로 리스트의 값을 인덱싱 할 수 있다 만약 리스트의 값이 [1,[10,11],2,3] 으로 저장되어 있는데 11을 인덱싱하고 싶다면 변수[1][1] 의 형태로 순서대로 인덱싱을.. 2023. 8. 13.
파이썬 문자열 메소드 정리 파이썬 문자열 메소드 문자열로 선언된 변수는 뒤에 .매소드를 붙여서 변환 출력이 가능하다 대소문자 upper() - 모든 문자를 대문자로 lower() - 모든 문자를 소문자로 title() - 단어의 첫 글자만 대문자 capitalize() - 문장의 첫 글자만 대문자 a = 'big cat house' print(a.capitalize()) print(a.title()) print(a.upper()) print(a.lower()) 으로 확인하면 순서대로 Big cat house Big Cat House BIG CAT HOUSE big cat house 가 출력된다 자리수 지정 및 배열 ljust(a) - 좌측 rjust(a) - 우측 center(a) - 중앙 a 에 원하는 자릿수를 적으면 해당 자릿.. 2023. 8. 13.
파이썬 문자열 인덱싱과 슬라이싱 문자열 인덱스 이해 파이썬의 문자열은 해당 0부터 시작해서 한 글자마다 한 칸의 자리를 가지고있다 큰 고 양 이 0 1 2 3 -4 -3 -2 -1 '큰고양이' 라는 문자열의 인덱스는 다음과 같다 정방향으로 시작할때는 0부터 시작하고 마지막 글자부터 시작할때는 -1 부터 시작한다 해당 자리의 글자를 불러오는 것을 인덱싱이라고 한다 인덱싱 그냥 원하는 글자를 가져온다고 생각하면 된다 예를 들어 고 라는 글자를 가져오고 싶으면 변수[1] 혹은 변수[-3] 을 사용하면 된다 a = '큰고양이' print(a[1]) print(a[-3]) 슬라이싱 여러 값을 중간에 잘라서 가져오고 싶을때 사용한다 변수[시작:마지막+1:규칙] 으로 사용한다 두 번째 자리는 해당 숫자의 앞자리 까지만 가져오니 사용할때 주의하자 시.. 2023. 8. 13.
파이썬 문자열 다루기 기초 (줄 바꾸기, 연산자, .format , f-string) 문자열 기본 이해 문자열은 list와 비슷하다 s = '큰고양이' #이렇게 입력 했을 때 print(s) #를 하면 큰고양이가 출력되고 print(s[1]) #을 하면 '고'가 출력된다 문자열 줄바꿈 입력하기 문자열에서 줄을 바꾸고 싶다면 바꾸고 싶은 위치에 \n을 삽입한다 혹은 문자열을 선언할때 ' ' 대신 """ """(큰 따옴표)3개 ''' '''(작은 따옴표 세개) 로 선언하면 그냥 엔터 치면서 입력하면 줄이 바뀐다 문자열 내부에 ' 혹은 \ 넣기 문자열에서 ' 나 \ 를 넣고 싶다면 그냥 앞에 \를 하나 붙여주면 된다 '를 출력하려면 \' \를 출력하려면 \\가 되겠다 문자열의 연산 문자열은 서로 더하면 그대로 값이 이어져 나오고 곱하면 해당 문자열을 곱한 수 만큼 반복한다 사용가능한 연산자는 .. 2023. 8. 13.