알고리즘

< 코딩테스트 개요 >

_IGHT 2020. 12. 3. 00:03

 

 

 

 

# 팀노트 준비 (30P)


# 코드업 사이트의 [문제] - [문제집]에서 [기초 100제] 풀기 (대부분 구현 문제로 구성)


# 코드업에서 200문제 풀고 백준으로 넘어가는 것을 추천한다고 한다.


# 책을 읽으며 백준 온라인 저지(solved.ac)에서 유형별 알고리즘을 찾아 풀어볼 것을 권장한다.


# 이 책으로 공부한 후에 백준 온라인 저지의 sw 역량테스트 문제를 푸는 것을 추천한다고 한다.


# 카카오에 지원하거나 카카오의 문제 스타일을 확인하고 싶다면 프로그래머스의 문제를 반드시 풀라고 한다.


# sw역량테스트 A형을 응시해보는 것을 추천한다고 한다.

 

(DFS/BFS를 활용해야하는 탐색시뮬레이션 문제 유형을 자주 출제한다고 한다. )


# PyPy는 때때로 C언어보다 빠르게 동작한다고 한다. 

 

( 시간 초과 판정을 받는 경우 파이썬3 으로 제출했던 코드를 PyPy3로 변경해서 제출하거나

 

 그 반대로 시도해보는 것이 일반적이라고 한다. )


# 시간 복잡도와 공간 복잡도는 일종의 거래 관계가 성립한다. (메모이제이션)


# 흔한 케이스는 아니지만 '실제 코딩 테스트'에서 시간 복잡도의 차수보다 작은 항들이 영향을 주는 경우가 있다.

 

(빅오 표기법이 항상 절대적인 것은 아니다.)


# 코딩테스트 문제에서 시간제한은 1~5초 가량이다. 보통 연산횟수가 10억을 넘어가면 오답 판정을 받을 수 있다. 


#  시간복잡도 분석은 문제풀이의 핵심이다. (문제를 해석하기 전에 조건을 먼저 보자)

 

(문제의 조건을 확인한 뒤에 사용할 수 있는 알고리즘을 좁혀 나가는 전략)


# 공간 복잡도 또한 빅오 표기법으로 표기한다. 메모리 사용량에도 절대적인 제한이 있다. ex) 128MB


# 코딩 테스트에서는 보통 메모리 사용량을 128MB ~ 512MB 정도로 제한한다.

 

(데이터의 개수가 1000만 단위가 넘어가지 않도록 알고리즘 설계를 해야한다.)


# 파이썬에서는 프로그램 수행시간과 메모리 사용량을 측정할 수 있다. (51p)


# 파이썬의 기본정렬 라이브러리는 최악의 경우 시간복잡도 O(NlogN)을 보장한다.


# 자신이 설계한 알고리즘의 성능을 실제로 확인하기 위해서 시간 측정 라이브러리를 사용한는 습관을 길러라


# 코딩테스트에서 문제를 풀 떄는 가독성을 해치지 않는 선에서 최대한 복잡도가 낮게 프로그램을 작성해야 한다.


# 대체로 채용을 위해 기업에서 주관하는 코딩테스트에서는

 

매우 높은 사고력이나 어려운 알고리즘 기반의 지식을 요구하지 않는다.


# 코딩테스트에서는 주로 기초 알고리즘에 기반하는 문제가 출제된다.


# 그리디, 구현, DFS/BFS를 활용한 탐색문제의 출제 빈도가 가장 높다. 


# 다이나믹프로그래밍이나 그래프이론 문제는 대회에 비해 코딩테스트에서는 상대적으로 쉽게 출제되는 편이다.


# 상당수의 문제는 문제를 해결하는 데 여러 가지 알고리즘을 요구한다.


# 알고리즘 테스트는 시간이 촉박하기 때문에 시간제한이 있는 코딩테스트 연습을 해둬야 한다. (1문제 30분 정도?)


# 70% 이상 풀어야 합격이다. 절반 이상 정확하게 풀어야 합격이다.


# 대회 입상이 목표가 아니라면 고급 알고리즘까지 공부할 필요는 없다.


# 코딩테스트에 출제되었던 문제 유형을 확인하고

 

  코딩테스트에 자주 출제되는 유형 위주로 학습을 진행하는 것이 유리하다.


# 카카오 2차 오프라인 테스트는 REST API, JSON 등의 원리와 requests 라이브러리에 대해

 

  이해하고 있어야 해결할 수 있다.

 


# 카카오 2차 오프라인 테스트와 같은 간단한 형태의 API 시스템을 설계하는 과정에 있어서는

 

  파이썬이 C++에 비해서 상대적으로 유리하다.


# 대기업은 코딩테스트에서 알고리즘 역량이나 컴퓨터 분야의 핵심이론을 기반으로 한 문제 해결능력에 중점을 두고 직원을 선발한다.


# 스타트업은 알고리즘 역량보다 기술면접에 중점을 두고

 

특정한 라이브러리나 프레임워크에 대한 경험이 있는지 확인한다.


# 기술 면접 본질 :

 

업무에서 요구하는 만큼 컴퓨터 이론지식을 갖추고 있으며 필요한 관련 프로젝트에 경험이 있고

 

알고 있는 내용을 논리 정연하게 설명할 수 있는 것


# 기술 면접 유형 : 알고리즘 문제 풀이와 질의응답 유형 , 포트폴리오 질의응답 유형, 컴퓨터공학 지식 질의응답 유형 


# 실제로 서로 다른 알고리즘을 비교하여 '특정한 상황'에서 무엇이 더 좋을지를 설명할 수 있어야 한다.


# 포트폴리오를 다른 사람이 보기 편하게 문서화해라

 

(블로그에 기록한 내용을 정리해서 깃허브에 포트폴리오를 만들자)


# github.com/JaeYeopHan/Interview_Question_for_Beginner

국내 기술 면접 가이드라인이다. 분야별로 알아두어야 하는 내용이 정리되어 있다고 한다.


# 자신이 어떤 방법으로 문제에 접근하여

 

어떠한 알고리즘을 사용했는지를 논리 정연하게 설명할 수 있는 지원자를 원한다.

 

논리적으로 말로정리하는 능력도 매우 중요하다.


 

728x90