새 출항을 알리는 신호탄을 생각보다 빨리 쏘아 올리게 되었네요!
기본기를 다지기에는 알고리즘만큼 좋은 것이 없다고 생각하여 알고리즘 공부를 다시 시작했습니다.
알고리즘을 너무 어렵게 받아들이기 보다는 맨몸운동 같은 걸로 생각할려구요!
맨몸운동과 다른 운동을 병행하면 효과가 좋은 것처럼... AI/백엔드를 공부하면서 알고리즘도 같이 준비하려고 합니다.
+) tmi에 해당하지만 킥복싱 & 맨몸운동 조합 최고입니다! 특히 킥복싱 진짜 재밌어요!!
단, 알고리즘 공부에 지나치게 취해 주력 영역을 잊는 행위는 지양하려고 합니다...^^
밸런스 조정에 신경 쓰면서 공부해 볼게요!
# Python 기본 라이브러리
import collections
import heapq
import functools
import itertools
import re
import sys
import math
import bisect
from typing import *
코딩 테스트에서 사용할 수 있는 '기본 Python 라이브러리'입니다.
위 리스트 말고 더 존재할 수도 있지만, 알고리즘 테스트에서 자주 사용하는 라이브러리들은 위와 같습니다.
+) Python 개발에서 자주 사용하는 numpy, pandas 등은 사용 불가능하니 주의하셔야 합니다!
# collections 라이브러리 & 주요 클래스
Python의 내장 데이터 타입(리스트, 딕셔너리 등)을 보완하기 위해 더 정교한 데이터 구조를 제공해요.
- Counter : 요소의 개수를 세는 객체 (딕셔너리와 유사)
- deque : 빠른 삽입 및 삭제가 가능한 양방향 큐
- OrderedDict : 순서를 유지하는 딕셔너리
- defaultdict : 기본값이 있는 딕셔너리
- namedtuple : 필드 이름이 있는 불변(immutable) 튜플
# heapq 라이브러리 & 주요 함수
힙(우선순위 큐)을 구현하기 위한 모듈입니다.
최소 힙(min-heap)을 지원해요.
최대 힙(max-heap)이 필요한 경우에는 마이너스(-) 기호를 사용해서 구현하면 됩니다!
- heap = [] : 힙 사용하기 위해 사전에 빈 리스트 정의
- heappush(heap, item) : 힙에 요소 추가
- heappop(heap) : 힙에서 최솟값 제거 및 반환
- heapify(iterable) : 리스트를 힙 구조로 변환
# functools 라이브러리 & 주요 함수
functools 라이브러리를 사용하면, 다른 함수를 인수로 받거나 반환하는 형태의 함수를 만들 수 있습니다.
이를 통해 복잡한 작업을 단순하게 만들 수 있어요.
- lru_cache : 이전에 계산한 값을 저장해 함수 호출을 최적화
- partial : 함수의 일부 인자를 고정하여 새로운 함수 생성
- reduce : 반복 가능한 객체에 누적 함수를 적용하여 값을 하나로 축소
# itertools 라이브러리 & 주요 함수
itertools 라이브러리를 통해 반복을 효율적으로 처리할 수 있어요.
- count, cycle, repeat : 무한 반복 생성
- permutations, combinations : 순열과 조합
- chain : 여러 iterable을 연결
- groupby : 데이터를 그룹으로 묶음
# re 라이브러리 & 주요 함수
정규 표현식을 사용하여 문자열을 검색, 매칭, 치환 등의 기능을 이용할 수 있습니다!
- match, search : 문자열에서 패턴 찾기
- findall : 모든 매칭 결과 반환
- sub : 문자열 치환
- compile : 패턴을 컴파일하여 성능 최적화
# sys 라이브러리 & 주요 함수
Python 인터프리터와 관련된 함수 및 변수를 이용할 때 주로 사용하는 라이브러리입니다.
- sys.argv : 명령줄 인수 리스트
- sys.path : 모듈 검색 경로
- sys.exit() : 프로그램 종료
- sys.stdin, sys.stdout : 표준 입출력 스트림
# math 라이브러리 & 주요 함수
math 라이브러리는 수학적 연산을 수행하기 위한 함수와 상수를 제공해요.
- sqrt, ceil, floor, factorial : 자주 쓰이는 수리 연산 함수
- pi, e: 자주 쓰이는 상수.
- sin, cos, log : 삼각 함수 및 로그 함수
# bisect 라이브러리 & 주요 함수
bisect 라이브러리를 통해 정렬된 리스트에서 요소를 효율적으로 삽입하고 검색할 수 있어요.
- bisect_left, bisect_right : 정렬된 위치 검색
- insort_left, insort_right: 정렬된 리스트에 삽입
# typing 라이브러리 & 주요 기능
typing 라이브러리를 통해 python에 정적 타입 힌트를 제공할 수 있습니다!
제가 정말 좋아하는 라이브러리 중 하나입니다 ^_^
- List, Dict, Tuple : 특정 타입 지정
- Union : 여러 타입을 허용
- Optional : None을 허용
- Callable : 호출 가능한 객체 타입 지정
국내/국제 정세가 어지러워지면서 여기저기 날이 서있는 분위기가 조성된 것 같네요...
삶이란 허무하고 공허한 것인데 가끔은 이게 다 무슨 소용인가 싶을 때도 있어요.
생각이 많아지는 시기예요.
그렇지만 본질은 단순합니다.
제가 할 수 있는 최선은... 살아생전에 실력으로 보답하다가 긴 여행을 가야 할 때가 되면 떠나는 것입니다.
삶을 회피할 생각은 전혀 없어요.
제게 주어진 삶을 인정하고 정면을 향해 나아갈려구요.
여러모로 시지프스에게서 많은 위로를 받는 요즘입니다.
+) 부족한 부분이 있으면 댓글로 말씀해 주세요! 겸허한 마음으로 더 공부하고 수정하겠습니다.
'개인 공부 > 알고리즘 (공부+문제풀이)' 카테고리의 다른 글
스택 (Stack) 자료구조 : Python 개념 설명 + LeetCode (Stack 문제들) (0) | 2025.01.05 |
---|---|
LeetCode (No.125) : Python 문제 풀이 (1) | 2024.11.26 |
코딩 테스트/인터뷰 : 연습 플랫폼 (1) | 2024.11.22 |