본문 바로가기

IT/알고리즘 코딩

(6)
Python 변수의 Scope와 Mutable vs. Immutable 데이터 타입 Python은 다양한 데이터 타입과 변수의 스코프(scope)를 지원하여 개발자에게 유연성을 제공합니다. 그러나 이러한 유연성은 종종 변수의 범위(scope)와 데이터 타입의 가변성(mutable) 여부에 따라 동작이 달라질 수 있다는 것을 의미합니다. 이 글에서는 Python에서 변수의 스코프와 가변 및 불변 데이터 타입의 차이를 설명하겠습니다. 변수의 스코프 (Scope of Variables): Python에서 변수의 스코프는 변수가 유효한 범위를 나타냅니다. 주요한 변수 스코프는 다음과 같이 세 가지가 있습니다. 지역 변수 (Local Variables): 함수 내에서 정의된 변수로, 해당 함수 내에서만 접근 가능합니다. 전역 변수 (Global Variables): 함수 외부에서 정의된 변수로,..
[코테] 알고리즘 공부 Cheat sheet - 0 (자료구조) Cheat sheet 1 부터 쓰기 시작했는데, 기본 자료 구조 정리를 안해서 이번 편은 0 이라고 썼습니다.. 파이썬 자료 구조 간단 정리 ! 리스트 파이썬에서 가장 많이 쓰는 동적 배열 자료구조 순서가 있다. 자유로운 추가 append 삭제 remove 검색in my_list, my_list.index(val) 다양한 자료형 및 중복 허용 in 의 용도를 이해하는게 중요하다. 리스트 같은 반복 가능한 객체를 순회하는 용도 (for .. in ..)로도 쓰이지만, 이러한 시퀀스 객체 내 존재하는 요소인지 확인하는 데에도 쓰인다. 존재 여부를 확인할 때에는 .index() 가 아닌 in 연산자를 쓰면 된다 # 생성 my_list = [1, 2, 3, 4, 5] # 추가 my_list.append(6) ..
[코테] 알고리즘 공부 Cheat sheet - III (DP) Dynamic Programming 다이나믹 프로그래밍 (이하 DP) 은 시간이 지남에 따라 일련의 결정 단계로 나누어 의사결정을 단순화하는 방법이다. (정의가 확 안 와닿는다. 하지만 익히 알고는 있었지 않은가?) but, 아래 두 가지는 DP 문제를 풀기 위한 필수 캐싱 도구로 알아야 한다. - 메모이제이션 : 탑다운 (top down) 방식에서 사용 재귀 사용 필요한 부분 문제들에 대해 구해 놓은 값들을 저장하고 다시 사용. (lazy) - 타뷸레이션 (tabulation): 바텀업 (bottm up) 방식에서 사용 반복문 사용 부분 문제들에 대한 답을 미리 다 구한다. (eager) 바텀업의 경우 부분 문제의 답을 미리 알아야 하는 문제가 있을 수 있어서 탑다운 방식으로 구현하는게 좀 더 쉬울 수..
[코테] 알고리즘 공부 Cheat sheet - II (search) 이진 탐색 이진 탐색하여 찾는 범위를 매 회 절반 씩 날릴 수 있다 여러번 탐색해야 하는경우 선형탐색보다 유리 다만, 정렬된 상태이어야 함 $ O(N log N) $ bisect 이진탐색으로 이미 구현된 bisect 를 사용한 예 from bisect import bisect_left, bisect_right v = [0, 1, 2, 2, 3, 4, 5, 6] def find_bisect_num(arr, num): return bisect_right(arr, num) - bisect_left(arr, num) # bisect_right 해당 값 초과 index # bisect_left 해당 값이 최초 나오는 index # bisect_right - bisect_left = 해당 값 개수 print(fin..
[코테] 사용언어가 파이썬이라서 알아야 하는 것 코테 언어로 파이썬이 간편하다고 생각해서 사용을 많이 하는데 사소한 실수 때문에 의외로 시간을 까먹는 경우가 많습니다. 코딩 문제를 통과하려면 알아둬야 할 몇가지가 있는데 대표적인 것을 정리해보려 합니다. 시간초과 input 이 스레드세이프 해서 그런지 엄청 느리다고 합니다. 시간초과 주범이므로 아래와 같이 치환 가능합니다. import sys input = sys.stdin.readline # 아래에서 이전처럼 input 사용 가능 최대 재귀 초과 maximum 을 늘려주는 수 밖에 없음 import sys sys.setrecursionlimit(10**6) 백준 온라인 저지 외에는 사용할 일이 아직 많지는 않았지만 알아둬야 할 것 같아서 언급하였습니다. 기본들 그 외 파이썬 문법 자체에 익숙치 않아서..
[코테] 알고리즘 공부 Cheat sheet - I 그리디로 풀 수 있는 문제인가?수열 $A_{i} $ 는 $ A_{i-1}$ 의 배수이다. 와 같은 얘기가 있어야 한다. 혹은 정렬 후 최적의 해를 무조건 찾는 방법을 알 수 있는 경우 등 예를들어 100원, 400원, 500원으로 800원 최소조합 찾기 같은 건 안되는 것처럼.. (백준 11047 1931) python 에서 자주쓰이는 itertools 사용하기from itertools import permutations (r-길이 튜플들, 모든 가능한 순서, 반복되는 요소 없음) from itertools import combinations (r-길이 튜플들, 정렬된 순서, 반복되는 요소 없음) ex) permutations('ABCD',2) -> AB AC AD BA BC BD CA CB CD DA ..