티스토리 뷰

코딩 테스트, 코딩 인터뷰 스트레스 받죠. 공부를 하면 되지만 아무래도 효율적으로 하고 싶으니 검색부터 합니다. '코딩 테스트 공부 방법'ㅎㅎ 이제는 안하지만 저도 참 열심히 검색을 했었죠. 저는 문제풀이도 재밌지만 프로젝트하는 것을 더 좋아하는데 그래도 저 높으신 분들께 '제가 이러이런걸 했어요오!!'라고 신나게 보여주기 전에 일단 이 장벽을 넘어야죠. 이제는 대충 코테가 무엇을 원하는지, 어느정도를 요하는지 감은 오는 것 같습니다. 스마트하신 분들께서 이미 정리해주신 다양한 자료들을 정리해보도록 하겠습니다.


안경잡이 개발자 (Youtube)

공부 사이트

  • 기초 : 코드업(알고리즘을 처음 접하는 학생이 쉽게 시작할 수 있는 기초 100제)
  • 그 이후: 백준, 코드포스 등의 사이트에서 문제를 풀어보는 것이 좋음
  • 삼성전자 역량 테스트 기출은 백준에서 전부 확인 가능
  • 카카오 코딩 테스트는 프로그래머스 사이트에 게시되어 있음

유형 공부/풀이 순서

그리디 알고리즘 → 탐색(삼성전자의 경우 탐색 문제 빈출) → 기본 동적 프로그래밍 →그래프 이론 →중/고급 동적 프로그래밍 & 문자열

(연구직/대학원이 목표라면 고급 다이나믹 프로그래밍까지 공부해야함)

 

어느 정도 실력이 필요한걸까?

  • 코드포스의 블루 레벨 정도 (그리디, 동적 프로그래밍, 탐색만 잘해도 블루 달성 가능)
  • 삼성 역량 테스트 B형
  • 일반적인 대기업 공채는 문제 수와 관계없이, 절반 정도를 맞추면 합격하는 추세

뒤에 언어 추천 등 더 많이 얘기 하시는데 저는 일단 C++로 밀어붙일거라서 궁금하시거나 직접 보고 싶으신 분들은 여기로 가셔서 보시면 좋을 것 같습니다. 안경잡이 개발자님은 블로그도 운영하시니 여기로 가보시면 티스토리 확인하실 수 있습니다.


박트리 (Tistory)

출처 : 박트리님 티스토리

일단 채워야 할 기초

  • 배경지식 : 코딩 문법, 시/공간 복잡도 분석
  • 자료구조 : 배열, 트리, 그래프, 힙, BST, 스택, 큐
  • 알고리즘 : DFS, BFS, 정렬, 백트래킹, DP, 분할정복, 최단거리

문제풀이 

  • 시간 측정하기 : 이해하는데 걸린 시간, 풀이 생각해내는데 걸린 시간, 코딩 시간, 디버깅 시간 기록해서 부족한 부분을 중점적으로 노력
  • 카카오의 경우 비교적 높은 배경지식을 요하는 경우가 있고, 문자열 파싱 문제가 꽤 많이 나온다.
  • BOJ(백준)보다 SWEA에서 난이도 3~5 문제를 많이 풀자
  • 구현/디버깅 시간이 너무 오래걸린다면 : 자주 한 구현 실수 정리하고 대략적인 순서도를 그려보자. 자주 사용하는 부분을 함수로 템플릿화 하는 연습하기

공부를 해도 안된다면?

  • 배경지식이 있는데도 문제 접근 조차 못한다면 컴퓨팅적 사고력이 부족한 상황
  • 이해 예시1 : 컴퓨터가 1초에 1억번의 연산을 할 수 있으므로 어떤 시간 복잡도 까지는 가능하겠다
  • 이해 예시2 : 메모리 제한이 몇이므로 배열을 어느정도까지는 할당 할 수 있겠다
  • 이해 예시3 : 재귀함수를 트리형태로 어떻게 진입하고 무엇을 하고 무엇을 리턴하고 종료되는지 그려짐
  • 이해 예시4 : 완전탐색시 상태공간을 정의할 수 있고, 현재 상태에서 다음 상태로 갈 수 있는 방법이 몇 개인지 이해하고 최종 종료 상태와 최초 진입 상태가 무엇인지 이해하고 그림으로 표현

바보팀1 (Tistory)

 출처 : qkqhxla1님 티스토리

일단, 준비물 : 긴 시간 공부할 끈기와 시간

1. 기초적인 프로그래밍 공부

  • 대상 : 공부도 안하고 성적도 그저그런 전공 학부생 || 이제 흥미를 가지는 비전공자
  • 언어데 대한 기본서 한 권 정도 사서 읽고 기본적인 프로그래밍 틀을 잡는다
  • 기본적인 문제 많이 풀기 (기초적인 프로그래밍 100제 등의 문제지)
  • 생각을 프로그래밍으로 옮기는 아주 기초적인 단계

2. 기본적인 프로그래밍, 자료구조, 기초 알고리즘 공부.

  • 대상 : 1번은 완료. 기본적인 프로그래밍 베이스를 쌓고 싶은 && 전공자인데 학부생 (2학년) 수준의 문제 복습하고 싶은
  • 적당한 자료구조 책 한 권 사서 정독하고 본인의 언어로 개념 알 때까지 구현
  • 알고리즘 책 한 권 사서 정독(대회 준비용 아님)
    • 가장 인기 있는 부분 : 정렬
    • 정리 해두고 시간복잡도 같은 것들은 면접 전에 한 번 보기 / 코테에는 요즘 잘 안나옴
  • 백준 입성 단계 축하 : 이곳에 있는 기본적인 문제들을 풀며 백준 사용법 익히기
    • 어려운 문제 말고(동적 계획법, 백트래킹, 네트워크 플로우 등) 쉬운 것 풀기(큐 사용, 문자열 등)

3. 기본기 응용, 알고리즘 공부 시작.

  • 대상 : 열심히 학교수업따라와서 기본 탄탄한 학부 3,4학년생 || 학부생 수준보다 더 높은 수준의 공부를 시작하려는 사람
  • 기본적인 자료구조, 알고리즘 구현이 가능하고 필요 따라 바꿔 쓸 수 있는 능력이 되어 있음
  • 대부분 2,3단계 : 면접에서 손코딩으로 구현 해야 하는 정도의 난이도
  • 3단계 정도부터 : 코딩 테스트에 나오는 난이도
  • 백준에서 문제집 카테고리 → 공개 카테고리 → 끝 페이지 : 쉬워 보이는 카테고리 골라 풀기 (어려운건 여전히 노터치)
    • 2단계와 비슷하지만 단순 구현 이상으로 생각을 더 해야 함 : 예시 
    • 생각을 시작 : ex) set자료구조가 빠르다는것을 알고 활용하기 시작하는 정도, 피보나치 수열을 반복문으로 구현하는 정도.) 
  • 프로그램을 효율적으로 돌게 하기위한 로직을 조금씩 생각하는 진정한 알고리즘 공부 입문

4. 취업대비 알고리즘 공부 시작

  • 대상 : 자료구조 적당히 구현 다 할줄 알고, 기본적인 함수들과 다른 자료구조 지식들을 섞어서 프로그램을 자유롭게 만들수 있는 정도 || 어떤 경우에 어떤 자료구조가 효과적인지 아는 정도 || 대기업 코딩테스트 노리고 공부 시작하는 사람.
  • 이제 난이도 대폭 상승. 중견 기업 이상 준비한다면 여기 까지 와야 하고, 이 단계도 빡세게 할 만하다 싶으면 높은 IT 기업(네이버, 카카오 등)도 가능
  • 취업용 알고리즘 책 구입 : 종만북
    • 종만북을 읽으면서 챕터 1 읽고, 가볍게 구현
    •  ex. 챕터 7이 [분할 정복]이라면 읽고, 방법론 등을 이해하고 구현 후 백준 카테고리에서 분할 정복 카테고리 풀 수 있는 만큼 풀기. 못 풀겠으면 구글/네이버 검색해서 답 찾고 이해
    • 오랫동안 생각 해보는 것도 중요하지만 처음에는 어떻게 짜야 할지 모를 때가 많음. 문제와 답을 보고 이해하며 생각하는 것도 중요
    • 하지만 결국은 스스로 코드를 짤 줄 알아야 함
  • 종만북에 없는 알고리즘은 네이버나 구글에서 이론을 찾아서 한 번씩 읽어보고 풀어 보는 것 추천
  • 문제를 풀다 보면 주류 , 비주류 구분이 가능
    • 주류 : 트리, 구현, 기본적인 다이나믹 프로그래밍, bfs dfs와 같은 탐색 등
    • 비주류 : suffix automaton, 아호코라식같은 이름부터가 요상한 알고리즘, 수학과 관련 된 것들 등
    • 취업용이기 때문에 대부분 문제가 많은 주류 알고리즘을 많이 풀어보는게 좋음
  • 개인적으로 구현 종류 및 DP(다이나믹 프로그래밍)을 많이 풀어보는 게 좋은 듯
  • 코테에서 주로 나오는 알고리즘들 대부분은 몇 문제만 풀면 개념적으로 이해하기 쉬운데, dp의 경우 종류가 너무 많아서 많이 풀어보는게 좋다고 생각
  • 구현은 백준만 보시면 난이도가 낮다고 생각 하기도 하는데 어느정도 어렵게 나오는 구현 문제가 정말 종합적인 코딩 능력을 길러준다. (개인적 생각)
  • 취업에 대비해서는 개인적으로 푼 문제의 질이 괜찮고, 잘 이해했으면 백준 400문제 정도만 풀어도 괜찮다고 생각
  • 그리고 이거 중요한건데...
    • 3단계까지의 알고리즘은 풀이법을 알면 다음부터 혼자서 짤수 있는데 4단계의 일부 알고리즘부터는 이론도 복잡해서 혼자서 짜기가 힘든 경우 이미 있는 코드를 가져와서 변형하는 방식으로 문제를 푸는게 좋음 (그냥 복붙이 아닌 나중에 자세히 서명할 줄 알아야 함)
    • dp정도는 유형이 워낙 다양해서 혼자서 짤줄 알아야하고 공부하다 보면 복잡한 것들이 나오는데 스스로 판별해서 일정 수준 이상이면 이미 있는거 쓰기
  • 코테가 집에서 보는 온라인 코딩이라면 아무리 어려워도 이미 풀어 봤으면 그거 가져다 쓰면 됨
  • 오프라인의 경우에는 그렇게 복잡한 문제를 손코딩하거나 인터넷 없이 풀어보라고 잘 요구하지 않음
    • 면접 가서 보는 손코딩은 제가 위에 적은 난이도중 ~3단계 또는 ~4단계의 극초반 정도
    • 그러니까 굳이 많이 어려운거 이해 잘 안가는데 꼭 혼자서 해보겠다고 계속 시간 낭비할 필요가 없이 어려운것들은 유형만 파악해놓으면 된다는 것 

5. 취업대비 알고리즘 익숙해지기, 취업에 나오는 문제 집중 풀기, 한번 푼 문제 바꿔서 풀어보기

  • 대상 : 4번 단계 이상자 && 알고리즘 공부를 따로 시간내서 몇달/년 이상 해 본 경험이 있는 사람
  • 3, 4 단계까지 혼자서 한 경험이 있으면 이 글은 그냥 재미로 읽고 있을 것
  • 이제 새 문제를 보면 어떤 종류의 알고리즘을 써야 하는지는 대충 감이 오고, 잘 몰라도 어떻게 이전 코드들을 조합해서 스스로 답을 얻어낼 수 있을 정도의 실력자라고 봄
  • 3단계정도에서 시작해서 5단계까지 넉넉하게 준비가 되었다라고 느낄정도로 공부하는데 5개월이 걸렸음

donaricano-btn

'CS > 기타' 카테고리의 다른 글

MVC에서 MVP를 거쳐 MVVM까지  (0) 2021.10.19
[GitHub] Personal Access Token  (3) 2021.08.23
[CS] Namespace 란? Swift Namespace?  (2) 2021.04.22
[Git] Terminal logout & login (OSX)  (0) 2021.04.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함