Skip to content

dremdeveloper/programmers_python_algorithm

Repository files navigation

코딩 테스트 - 파이썬 편 공부자료

코딩 테스트 대비를 위해 작성한 파이썬 알고리즘 및 자료구조 학습 노트입니다. 이 저장소는 기본적인 파이썬 문법부터 심화 알고리즘, 그리고 자주 발생하는 실수까지 체계적으로 정리되어 있습니다.


학습 가이드 및 저자 소개

  • study_guide.md: 개념을 체화하고 문제 해결 전략을 세우는 효과적인 알고리즘 학습 방법을 제시합니다. 메타인지를 활용하여 학습 효율을 높이고, 습득한 지식을 장기 기억으로 전환하는 구체적인 가이드를 제공합니다.
  • profile.md: 본 저장소 저자의 이력과 주요 활동, 저서 등을 소개합니다. 10년차 머신러닝 소프트웨어 개발자이자 베스트셀러 저자로서의 경험과 지식 공유에 대한 열정을 엿볼 수 있습니다.

자료구조 (Data Structure)

알고리즘의 효율성을 결정하는 핵심 요소인 주요 자료구조의 원리와 파이썬 구현 방법을 심도 있게 다룹니다. 단순히 문법을 나열하는 것을 넘어, 각 자료구조가 어떤 상황에서 왜 효과적인지 성능적 이점과 함께 설명하여 문제 해결 능력을 근본적으로 향상시키는 것을 목표로 합니다. 2차원 리스트의 '얕은 복사' 문제, Counter를 이용한 애너그램 판별, defaultdict를 이용한 그래프 인접 리스트 구현 등 실제 코딩 테스트에서 마주칠 수 있는 구체적인 활용 예제들을 포함합니다.


주차별 학습 노트 (Week 1 ~ 4)

4주간의 체계적인 커리큘럼을 통해 파이썬의 기초 문법부터 실전 알고리즘까지 단계적으로 학습하며, 각 주차별로 명확한 학습 목표를 가지고 있습니다. 매주 특정 주제를 깊이 있게 탐구하며, 이론 학습과 코드 구현, 성능 비교를 병행하여 지식을 체화할 수 있도록 구성되었습니다. 단순한 개념 학습을 넘어, 각 알고리즘과 자료구조가 실제 문제에서 어떻게 활용되는지 다양한 예제를 통해 보여줌으로써 실전 감각을 기르는 데 중점을 둡니다.

  • Week 1: 파이썬의 기본 자료구조를 깊이 있게 다루며, 코드의 효율성과 성능 최적화에 초점을 맞춥니다. 리스트의 pop(0)dequepopleft() 성능 차이, 문자열 합치기에서 + 연산과 join()의 효율성 비교, setlist의 검색 속도 차이 등 시간 복잡도를 고려한 코드 작성법을 학습합니다.
  • Week 2: 스택(Stack)과 큐(Queue) 자료구조의 원리를 이해하고 실제 문제에 적용하는 방법을 집중적으로 학습합니다. 스택을 이용한 괄호 유효성 검사, 후위 표기법 계산기, 재귀 함수 구현 원리를 다루고, 큐를 활용하여 요세푸스 문제, 프린터 대기열, 브라우저 방문 기록과 같은 시뮬레이션 문제를 해결합니다.
  • Week 3: 그래프(Graph) 이론의 핵심 개념과 탐색 알고리즘을 학습합니다. 인접 행렬과 인접 리스트를 이용한 그래프 표현 방법을 배우고, 대표적인 탐색 알고리즘인 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)을 재귀 및 반복문으로 각각 구현하며 최단 경로 탐색, 연결 요소 찾기 등 응용 문제를 풀어봅니다.
  • Week 4: 가능한 모든 해결책을 탐색하는 백트래킹(Backtracking) 알고리즘을 체계적으로 학습합니다. N-Queens, 스도쿠 풀이와 같은 고전적인 문제부터 순열, 조합, 부분집합 생성 등 코딩 테스트 빈출 유형까지 다양한 예제를 통해 재귀적으로 상태 공간을 탐색하고 가지치기를 통해 효율을 높이는 전략을 익힙니다.

프로그래머스 문제 풀이 (Level 0 ~ 2)

국내 대표 코딩 테스트 플랫폼인 '프로그래머스'의 레벨별 문제 유형에 맞춰 필요한 핵심 개념과 알고리즘을 정리하여 효율적인 학습이 가능하도록 돕습니다. 각 레벨은 입문자부터 숙련자까지 단계적으로 실력을 향상시킬 수 있도록 설계되었으며, 실제 코딩 테스트와 유사한 문제들을 통해 실전 감각을 극대화할 수 있습니다. 단순한 문제 풀이 코드뿐만 아니라, 해당 문제를 해결하는 데 필요한 핵심 아이디어와 파이썬의 유용한 기능들을 함께 제시하여 학습 효과를 높입니다.

  • Level 0: 파이썬 프로그래밍을 처음 시작하는 입문자를 위한 단계로, 코딩의 가장 기초적인 블록을 쌓는 데 중점을 둡니다. 변수 선언, 자료형의 이해, 산술/비교/논리 연산자, if-elsefor와 같은 제어문, 그리고 코드 재사용의 첫걸음인 함수 정의(def, return)까지 필수 문법을 다룹니다.
  • Level 1: 기본적인 문법을 넘어 실제 문제 해결에 자주 사용되는 파이썬의 강력하고 실용적인 기능들을 익힙니다. enumerate, sorted, zip 등 유용한 내장 함수 활용법, set을 이용한 중복 제거, Counter를 이용한 빈도수 계산, 간결한 코드를 작성하게 해주는 리스트 컴프리헨션과 3항 연산자 등을 학습합니다.
  • Level 2: 본격적인 알고리즘 역량을 요구하는 중급 단계로, 코딩 테스트의 핵심 알고리즘과 자료구조를 집중적으로 다룹니다. deque를 활용한 효율적인 큐, heapq를 이용한 우선순위 큐, itertools의 순열/조합, DFS/BFS, 이진 탐색, 투 포인터, 그리디, 에라토스테네스의 체 등 다양한 알고리즘의 원리를 이해하고 문제에 적용하는 훈련을 합니다.

흔히 발생하는 실수 (Common Mistakes)

코딩 테스트나 실제 개발 과정에서 파이썬 사용자들이 자주 겪는 오류와 논리적 함정들을 유형별로 정리하여 실수를 미연에 방지할 수 있도록 돕습니다. 단순히 에러 메시지를 해결하는 것을 넘어, 각 실수가 발생하는 근본적인 원인을 이해하고 올바른 코드 작성 습관을 기르는 것을 목표로 합니다. 각 예제는 잘못된 코드와 올바른 해결 방법을 명확하게 비교하여 보여줌으로써, 비슷한 실수를 반복하지 않도록 학습 효과를 극대화합니다.

  • 문법 및 타입 오류: IndentationError(들여쓰기), AttributeError(잘못된 메서드 호출)와 같은 기본적인 문법 실수와 TypeError, ValueError, KeyError 등 데이터 타입을 잘못 다루어 발생하는 오류들을 예제로 보여줍니다. try-except, .get() 등 안전한 예외 처리 방법도 함께 다룹니다.
  • 논리적 함정: is==의 미묘한 차이, 원본 데이터를 손상시킬 수 있는 제자리(in-place) 메서드의 None 반환, 반복 중 리스트를 수정할 때 발생하는 문제 등 초보자가 발견하기 어려운 논리적 오류들을 설명합니다.
  • 메모리 및 성능 문제: 중첩 리스트의 '얕은 복사(shallow copy)' 문제와 copy.deepcopy를 이용한 해결책, 가변 객체를 함수의 기본 인자로 사용할 때 발생하는 함정 등 메모리 공유로 인해 발생하는 예기치 않은 동작들을 심도 있게 다룹니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages