지극히 주관적인 생각이며 코딩 테스트 유형이 읽는 시점에 많이 달라졌을 수 있다.
머릿말
-
생각보다 많은 분들이 코테 준비를 어떻게 했는지 물어봐주셔서
-
이 참에 글로 정리를 하기로 마음먹었다.
-
또한 필자의 글이 틀릴 수 있고
-
문제 유형이 변하면서 공부 방법이 틀릴 수 있다.
-
꼭 감안해서 봐야한다 !!!
-
사실 이 글을 쓰기 전 지인들에게만 공유했던 BOJ 그룹에
-
내가 코딩 테스트를 어떻게 준비했는지 적어놨었는데
-
그 글을 보기 위해선 가입을 신청해야하는 번거로움이 있어서
-
Public하게 이 블로그에 글을 공유하기로 하였다.
// 200420 추가
BOJ 그룹에 가입 신청을 해주시는 분들이 계시는데
제가 BOJ를 거의 안들어가고 관리도 되지 않는 상황입니다 ㅠㅠ
그럼에도 어떤 문제집이 있는지 궁금하시다면
신청하시고 메일 혹은 오픈방으로 연락주시면
승인처리 해드리겠습니다 !
감사합니다.
코딩 테스트 준비
-
글을 시작하기 앞서
-
필자의 주관적인 생각이며 절대적인 답이 아니다.
-
단지 나는 이렇게 준비를 했음을 공유하는 것이다.
-
또한 간과하지 말아야할 부분이
-
내가 말하는 준비 방법의 핵심은 선택과 집중이다.
-
가장 많이 출제되는 유형에 시간을 투자하는 것이다.
-
그렇기 때문에 5문제가 나오면 5문제를 다 맞추는 준비 방법이 아닌
-
적어도 1~2개는 맞춰서 코딩 테스트 관문은 통과할 수 있게끔 하는 방법이다.
완전 탐색
-
모든 코테에서 가장 많은 유형을 차지하는건 완전 탐색이다.
-
시간이 없는 취준생이라면 완전 탐색만 푸는걸 추천한다.
-
진짜로 대부분의 기업 코테는 다 뚫을 수 있다.
Why?
-
ACM과 같은 알고리즘 대회에서 성적순으로 짜르는 시스템이 아니고
-
전체적인 평균을 넘는 지원자가 통과하는 방식이라고 생각한다.
-
즉 완전 탐색만 문제만 제대로 풀면 평균은 할 수 있기 때문에
-
취업을 위한 관문을 통과할 수 있다고 생각한다.
-
취준생에게 시간은 금이다.
-
또한 기업 코딩 테스트는 유형을 아느냐 싸움이라고 생각한다.
-
문제풀이 시 20~30분 고민했는데
-
알고리즘이 안떠오르면 답을 봐라.
-
내가 했던 방식이였다.
-
답 코드를 보고 이해한다.
-
혼자서 스스로 다시 짜본다.
-
체크해놓고 나중에 반드시 다시 풀어야한다.
-
답 코드를 볼 때는 코드를 거의 외우다시피 봐도 된다.
-
그리고 중요한건 혼자서 스스로 다시 짜보는 것이고
-
더 중요한건 나중에 다시 풀어보는 것이다.
-
신기하게도 한번 막혔던 부분은 다음에 풀어도 똑같이 막힌다.
-
다시 풀 때 정답 코드가 생각난다고 안푸는 사람도 있는데
-
필자는 그래도 다시 풀었다.
-
머릿속에 떠오르는 것과 직접 타이핑해보는 것은 정말 다르다.
그런데…
-
완전 탐색이 중요한 건 알겠는데
-
나는 기초가 없으니까 BOJ 단계별 알고리즘으로 기초를 쌓아야겠다 ! 라고 생각하는 분이 분명히 있을꺼다.
-
지극히 주관적인 생각이지만
-
알고리즘 기초가 없다고
-
BOJ 단계별 알고리즘으로 기초를 쌓으려고 한다면
-
정말로 매우 아주 반대하고싶다.
-
알고리즘 실력을 길러서 코테를 뚫는다 라고 생각하지말고
-
코테를 뚫기위한 문제를 풀고 스킬을 쌓아서 코테를 뚫자 라고 생각하자.
-
그래서 내가 추천하는 방법은
-
프로그래머스로 기초적인 사고력 + 구현 능력을 쌓고
-
바로 완전 탐색 문제를 푸는 것이다.
-
여기서 완전 탐색 문제가 어려워서 못풀겠다고
-
포기해야겠다 생각이 들면 그렇게 해도 된다.
-
하지만 포기함은 동시에 취업을 포기하겠다는 뜻과 같고
-
취업 시기도 그만큼 늦어질 것이다.
-
정리하자면
-
완전 탐색 풀 수 있는 능력 = 기업 코테 뚫을 수 있는 수준이라고 생각하면 된다.
-
그렇기 때문에 완전 탐색 문제를 풀 수 있는 능력이 없다면
-
코테를 뚫을 수 있는 수준이 아니라고 생각한다.
-
그러면 2가지 방법이 있다.
-
끈질기게 공부해서 수준을 올리냐
-
코테보지 않는 기업을 지원하느냐
So What?
-
2번을 선택하였다면 조용히 뒤로가기를 하셔도 된다.
-
그렇지 않고 나는 끈질기게 공부해서 수준을 올리고 싶다면 이어서 글을 읽어보도록 하자.
-
기초적인 코딩을 위해서 프로그래머스를 활용하자
-
프로그래머스 사이트 -> 코딩 테스트 연습 -> 모든 문제 -> 레벨 1,2 에 있는 문제를 가능하면 다 풀자 !
-
풀다 모르겠으면 필자 블로그를 참고하자
-
https://goodgid.github.io/category/#Algorithm
-
프로그래머스 문제를 다 풀었다면
-
이제 본격적으로 완전 탐색을 조지자 !!!
-
( 삼성을 노린다면 ) SWEA 사이트 문제를 조지자.
-
BFS 혹은 DFS 관련 문제집을 조지자.
-
BOJ에 있는 삼성 기출 문제집을 조지자.
-
자유롭게 다른 유형을 준비한다.
-
프로그래머스 + 완전탐색
-
2개만 해도 충분하다고 생각한다.
-
무엇보다 2개하는것도 시간이 부족하다.
삼성 코테를 준비한다.
-
삼성의 문제는 완전 탐색 + 빡구현 유형이 압도적으로 높다.
-
그렇기 때문에 2가지 유형을 준비해야한다.
-
추천 문제 풀이 순서는
-
2 -> 3 -> 1 이다.
-
완전 탐색 유형을 익히기 위해서 2번으로 시작을 추천한다.
-
그리고 삼성 코테 스타일에 맞는 완전 탐색과 빡구현 능력을 기르기 위해서 1,3번의 문제를 푼다.
-
그렇게 되면 삼성 코테에 최적화된 상태가 된다.
-
그런데 왜 3 -> 1 순서일까?
-
(풀어보면 알겠지만) 1,3번의 문제를 제출하는 스타일이 다르다.
-
이건 문제를 풀면 무슨 말인지 안다.
-
그런데 여기서 삼성 코테에 최적화된 유형은 1번이다.
-
그렇기 때문에 1번을 마지막으로 풀면서
-
삼성 코테에 최적화된 환경에 익숙해지는 것이다.
삼성 코테를 준비하지 않는다.
-
추천 문제 풀이 순서는
-
2 -> 4 이다.
-
2번을 풀면서 완전 탐색에 대한 감을 익힌다.
-
딱 이수준까지하면 그래도 코테에서 1~2개는 풀 수 있는 수준이 된다.
-
그리고 다른 유형(=4번)을 준비한다.
-
여기서 1,3은 제외한 이유는
-
다른 기업 코테에서 삼성 처럼 긴 지문으로 나오는걸 본적이 없기 때문이다.
-
물론 시간이 된다면 풀어보는게 매우 좋다.
-
여기서 또 궁금증이 생길 수 있다.
-
자유롭게 하면 된다고하는데 어떤걸 해야하지…?
-
이 유형에 대해서는 지속적으로 업데이트를 할 예정이다.
2포인터(= 슬라이딩 윈도우)
-
추가 : 200409
-
요즘 코테를 보면 투 포인터 문제가 자주 나온다.
-
BOJ에서 해당 유형을 반드시 풀어 보길 추천한다.
-
18 하반기 SK 하이닉스 코테에도 나왔고
-
20 상반기 LINE 코테에도 나왔다.
-
그 외에도 종종 출몰한다.
스택
-
추가 : 200101
-
대표적으로 괄호의 짝이 맞는지 체크하는 문제를 풀어보자.
구현
-
계산기 구현해보자.
-
그리고 트리 순회를 해보자.
-
전위 순회 Preorder Traversal
-
중위 순회 Inorder Traversal
-
후위 순회 Postorder Traversal
-
완전 탐색이 어려워요
-
완전 탐색 문제가 어렵게 다가올 수 있다.
-
그런데 문제 자체가 어렵다기 보다는
-
그런 문제 유형에 익숙하지 않아서 어려운게 대부분이다.
-
문제 유형에 익숙해지면 진짜로 생각보다 쉽다.
-
스스로를 믿고 해보자 !!!
맺음말
-
혹시 풀다가 모르는 문제가 있다면 필자 블로그를 참고해보자.
-
필자 블로그가 좋다고 확신은 못하니 다른 블로그를 참고해도 된다.
SWEA 사이트에서 모의 문제 최소 2~3번씩 풀기
-
https://www.swexpertacademy.com/
-
블로그 : https://goodgid.github.io/tag/#SWEA
BOJ에 있는 삼성 기출 문제집 풀기
-
https://www.acmicpc.net/workbook/view/1152
-
블로그 : https://goodgid.github.io/tag/#BOJ
-
BOJ 사용시 유용한 크롬 익스텐션 추천 : 백준허브 사용 방법
기업에 취직하자 !!!
E.T.C
-
추가로 기업 코딩 테스트 환경은 90% 프로그래머스이다.
-
프로그래머스의 특징은
-
웹 에디터이기 때문에 브레이크 포인트를 사용한 디버깅이 불가능하다.
-
그리고 만약 카카오 코테를 준비한다면 map,set 사용법은 무조걱 익혀놓자 !
-
참고로 map = set + @ 라고 생각하면 된다.
-
그렇기 때문에 map을 익히면 set은 안써도 된다.
-
set으로 해야하는 문제들을 map으로 다 풀 수 있다 !