[Python] PEP8 스타일
·
프로그래밍/Python
PEP8 스타일   PEP 8PEP8 : 파이썬 개선 제안서, 파이썬 코드를 어떻게 구상할 지 알려주는 스타일 가이드PEP8 전체 가이드다른 사람과 원활하게 협업하려면 공통된 스타일 공유가 필요일관성 있는 스타일은 나중에 수정하기도 쉽다.whitespace한 줄의 문자 길이가 79자 이하여야 한다.함수와 클래스는 빈 줄 두개로 구분한다.클래스에서 메서드는 빈 줄 하나로 구분한다.변수 할당 앞 뒤에 스페이스를 하나만 사용한다.리스트 인덱스, 함수 홏ㄹ, 키워드 인수 할당에는 스페이스를 사용하지 않는다.naming함수, 변수, 속성 : lowercase_underscore보호(protected) 인스턴스 속성 : _leading_underscore비공개(private) 인스턴스 속성 : __double_le..
[Python] 리스트
·
프로그래밍/Python
리스트   파이썬에는 다른 언어들에서 다뤄지는 배열과 유사한 성질의 리스트(list)라는 자료구조가 존재한다.  동일한 자료형만 가질 수 있는 배열과는 달리, 리스트는 다양한 자료형을 하나의 리스트 안에 담을 수 있다.선언 방법a = [1,2,'a','b',"xyz"]b = []c = list()d = [0]*10 #[0,0,0,0,0,0,0,0,0,0]e = [i*2 for i in range(5)] #[0,2,4,6,8]리스트는 위와 같은 다양한 방법을 통해 선언이 가능하다.연산 a = [1,2,3]b = ['a','b','c']c = a+b #[1,2,3,'a','b','c']d = a*3 #[1,2,3,1,2,3,1,2,3]e = a*0 #[]이처럼 리스트 사이의 덧셈이 가능하며, 곱셈..
[자료구조] 해시 & 그리디
·
알고리즘
해시(Hash)  해시 개념해시란 해시 테이블에 Key와 Value를 매핑해서 데이터를 저장하는 자료구조이다. 주로 데이터 탐색, 삽입, 집계등의 연산을 할때 유용하며, 인덱스 값이 숫자가 아닌 문자열이나 튜플을 때도 유용하다. 하지만 최댓값과 최솟값을 찾는 문제는 자료구조 전체를 탐색해야 하기 때문에 효율성이 떨어진다는 단점이 있다.해시 (Hash) : 임의 값을 고정 길이로 변환하는 것해시 테이블 (Hash Table) : 키 값의 연산에 의해 직접 접근이 가능한 데이터 구조해싱 함수 (Hashing Function) : Key에 대해 산술 연산을 이용해 데이터 위치를 찾을 수 있는 함수해시 값 (Hash Value) 또는 해시 주소 (Hash Address) : Key를 해싱 함수로 연산해서, 해쉬..
[자료구조] 정렬, 탐색
·
프로그래밍/Python
알고리즘 시간 복잡도알고리즘을 풀때는 제한 시간내에 코드가 실행 완료되는것이 중요하다. 이를 위해 우리는 알고리즘의 시간복잡도와 공간 복잡도가 어떠한가를 미리 파악한 후 이에 맞는 문제 풀이 방법을 생각해내야 한다.이러한 복잡도를 표현하는 방법 중 가장 흔히 사용되는 방법은 빅오 표기법(big-O notation)이다.이에 관한 설명은 아래 링크에 자세히 작성되어 있다.https://seung2344.tistory.com/22리스트 파이썬에는 다른 언어들에서 다뤄지는 배열과 유사한 성질의 리스트(list)라는 자료구조가 존재한다. 동일한 자료형만 가질 수 있는 배열과는 달리, 리스트는 다양한 자료형을 하나의 리스트 안에 담을 수 있다.선언 방법a = [1,2,'a','b',"xyz"]b = []c = l..
백준 #1912 <연속합> 파이썬
·
알고리즘
난이도 : 실버2소요시간 :  27m사용한 풀이법 : DP풀이 과정입력받은 문자열을 정수형 리스트 arr[]로 변환dp[]에는 해당 인덱스에서 가질 수 있는 최대값을 넣는다dp[i-1]+arr[i]가 음수일 경우 최대값 생성에 방해가 되므로 해당 dp값은 0으로 초기화원래는 여기서 풀이를 끝낼라했는데 모두 음수일 경우를 고려안하게 생각나서 dp첫번째 조건문 뒤에 arr값을 dp값으로 초기화 해주는 코드 추가 ⇒ 내가 생각해도 좀 후진 코드..ㅎ원래는 max(dp)를 하려했으나 위 코드 추가되면서 max(arr)로 변경다른 풀이입력받은 문자열을 정수형 리스트 arr[]로 변환현재합과 최대합 연산용 변수 선언arr을 돌면서 해당 인덱스와 해당 인덱스에 현재합을 더한 것중 max를 현재합에 대입다시 max연산..
백준 #1699 <제곱수의 합>
·
알고리즘
난이도 : 실버2소요시간 : 48m사용한 풀이법 : DP풀이 과정dp용 리스트 선언각 인덱스에는 1로만 표현했을경우의 개수를 넣는다. 즉, 인덱스 번호를 그대로 대입!루프를 돌면서 DP탐색 시작인덱스 번호보다 작은 제곱 수 중에서 가장 큰 값을 찾는다.현재 인덱스 번호에서 해당 제곱 수를 뺀 인덱스 번호에 +1을 한 후, 대소비교를 진행한다.ex) dp[10] = dp[10-33]+1 = dp[1]+1 (11 + 3*3, 2개!)+1을 하는 이유는 앞선 dp[]값에 제곱 수의 경우가 하나 추가되는 것이기 때문작성 코드import mathN = int(input())dp = [x for x in range(N+1)]for i in range(1, N + 1): for j in range(1, int(..
백준 #1463 <1로 만들기>
·
알고리즘
난이도 : 실버3소요시간 : 31m사용한 풀이법 : DP풀이 과정dp용 리스트 선언 후 0으로 초기화dp 리스트는 인덱스 숫자가 1이 되기까지의 최소연산횟수를 저장하는 용도2~n+1까지 루프 실행dp[i] = dp[i-1]+1 : i번째 수는 i-1번째 수의 dp값에 +1을 한것을 디폴트로 둔다만일 i가 2나 3으로 나누어 떨어진다면, i에 2를 나눈 몫의 수에 해당하는 dp값과 디폴트값을 비교하여 최소값을 선택한다 작성 코드n=int(input())dp = [0]*(n+1)for i in range(2,n+1): dp[i] = dp[i-1]+1 if i%2 == 0 : dp[i] = min(dp[i],dp[i//2]+1) if i%3 == 0: dp[i] = m..
백준 #1932
·
알고리즘
난이도 : 실버1소요시간 :  1h 17m사용한 풀이법 : DP풀이 과정풀이과정(백트래킹)각 요소[i][j]는 대해서 [i+1][j],[i+1][j+1]만 더할 수 있음해당 위치에서 이동가능한 경로를 인자로 해서 함수 재귀 진행인자가 n과 같아지면 결과갑 리스트에 삽입모든 경우의 수 탐색 후 리스트의 max를 출력하면 정답!!이긴 한데 메모리 초과 뜸풀이과정(DP)위에꺼에서 아래꺼를 더하는 방식이 아닌 아래꺼에서 위에 값을 참조해오는 것으로 변경=>메모리 손실 방지참조 방식은 총 3가지행의 첫번째 인자일 경우, 바로 위 행의 첫번째 인자값에 더하면 됨 ([i-1][0])행의 마지막 인자일 경우, 바로 위 행의 마지막 인자값에 더하면 됨 ([i-1][-1])행의 중간일 경우, 바로 위의 인자값과 왼쪽 대각..