파이썬 데이터 구조와 알고리즘


알고리즘? 코딩테스트?

알고리즘?

어떤 문제해결하기 위해 정해진 일련의 절차나 행동.

문제란 input을 넣었을때 원하는 output이 나오도록 하는 것


코딩테스트?

기업에서 지원자를 대상으로 코딩을 통한 문제 해결 능력을 테스트 하는 것


코딩테스트에서 평가하는 두 가지 사항

  • 문제 해결력
    • 문제 의도를 정확히 파악하고, 적절한 해결 방법을 적용할 수 있는지
  • 구현력
    • 해결 방법을 프로그래밍을 통해 능숙하게 구현할 수 있는지


코딩테스트가 현업 능력을 평가할 수 있을까?

코딩테스트는 현업 환경과 달리 객체 지향적으로 코드를 작성하지 않으므로 완벽하게 현업 능력을 평가할 수는 없지만 신입의 실력을 어느 정도 측정하는데에 좋은 지표가 된다


코딩 테스트 종류

[온라인]

  • programmers
  • 백준 온라인 저지(BOJ)
  • SW expert arcademy
  • 코드업

[오프라인]

  • 개발형 코딩테스트(카카오 코딩 테스트)
  • 화이트 보드 손코딩
    • 지원자가 어떤 방식으로 문제를 해결하는지 논리, 과정, 커뮤니케이션 스킬을 평가

[기업별]

  • 카카오 온라인 코딩테스트
  • 삼성 SDS 직무 적성검사
  • 라인 코딩테스트


온라인 코딩테스트 Tip

  • 사전에 연습장과 필기도구 준비
  • 테스트 케이스 이외의 엣지 케이스도 확인
  • 인터넷, IDE, 알고리즘 노트 적극 활용


코딩테스트 준비하기

많이 풀기

Q1. 문제는 매번 풀 때마다 다른 유형을 푸는 것이 좋다?

X

연습 때는 같은 유형 문제를 단기간에 여러번 반복하는 것이 좋고 코딩테스트 직전에는 모의고사처럼 시간 제한을 두고 여러 유형을 푸는 것이 좋다.

Q2. 오랜 시간 고민했는데 풀리지 않을 때, 끝까지 답을 보지 않는 것이 좋다?

X

다만, 이후에 답을 보지 않고 반드시 한번 더 풀어서 내 것으로 만들어야 한다. 최대한 타인의 답을 많이 보면서 여러 풀이를 습득하는 것이 좋다.

Q3. 알고리즘 문제는 몇 문제 정도 풀어야 할까?

약 300~350 문제

사람마다 다르지만, 통계적으로 300~350 문제 정도 풀면 대부분의 코딩 테스트에 무난하게 합격할 수 있다.

기타 꿀팁

  • 변수명 대충 짓지 않기(a, b, c, d)
  • 언어가 가지는 내장 함수, 라이브러리를 적극 활용 하기
  • 반복되는 코드는 함수화를 통해 가독성 있게 작성하기
  • 면접을 위해 풀이를 남에게 설명하는 연습 반드시 필요

데이터 구조 & 알고리즘

프로그램 = 데이터 구조(어떻게 저장할것이냐) + 알고리즘(어떻게 조작할것이냐)

Data Structure 데이터 구조

데이터를 다양한 방식으로 저장하고 + 조회, 삽입, 변경, 삭제와 같은 조작 기능을 제공한다.

왜 데이터 구조가 중요한가?

아무데나 담는것 = 다라이

미술에는 수통, 화학에는 비커가 필요하듯, 문제 상황에 따라 더 적합한 도구가 필요하다

물통 == 물 + 통

데이터 구조 == 데이터 + 구조

물을 필요에 따라 저장하고 활용할 수 있으므로 문제를 더 효율적으로 풀기 위한 도구가 된다.

구조를 안다는 것

어떻게 저장하고 & 어떻게 활용(조작)할 수 있는지

코딩 테스트 정복을 위한 데이터구조와 알고리즘

  • 배열
  • Linked List
  • Hash
  • Stack
  • Queue
  • Priority Queue
  • Heap
  • Tree
  • Graph

[기본]

완전탐색, 재귀, 시뮬레이션, 그리디

[심화]

DFS, BFS, 백트래킹, 이진탐색, DP, 다익스트라, 크루스칼, 프림

관심있을 포스팅