카카오 코테 백준 난이도 - kakao kote baegjun nan-ido

코테는 회사마다 다르고 같은 회사여도 매번 유형이 다릅니다.

일반적으로 2~4시간 정도에서 약 4문제 내외의 문제가 출제됩니다.

제가 시험을 봤던 회사의 출제 유형에 대한 설명은 

jellyinghead.tistory.com/category/%EC%A0%95%EB%B3%B4/%ED%9B%84%EA%B8%B0

'정보/후기' 카테고리의 글 목록

꾸우주우우우우운히이

jellyinghead.tistory.com

카카오 코테 백준 난이도 - kakao kote baegjun nan-ido

이곳에 적어두었습니다. 대략적인 유형을 읽어볼 수 있습니다.

기본적으로 사용할 언어와 자료구조는 자유롭게 이용할 수 있어야합니다.

www.acmicpc.net/problem/tags

알고리즘 분류

www.acmicpc.net

카카오 코테 백준 난이도 - kakao kote baegjun nan-ido

저는 백준 알고리즘 분류에서 각 자료구조 유형의 문제를 풀며 익혔습니다.

언어와 자료구조에 익숙해졌다면 실력을 삼성 기출문제를 풀 수 있을 정도로 키우는 것이 좋다고 생각합니다.

www.acmicpc.net/workbook/view/1152

문제집: 삼성 SW 역량 테스트 기출 문제 (baekjoon)

www.acmicpc.net

카카오 코테 백준 난이도 - kakao kote baegjun nan-ido

각 회사마다 문제를 출제하는 유형이 있는데 삼성은 DFS, BFS, 구현 및 시뮬레이션에 특화되어 있습니다.

삼성 기출문제를 준비하며 위에 적어둔 유형의 문제를 많이 풀어서 문제 풀이 능력을 기르는 것을 추천합니다.


삼성을 가장 먼저 추천하는 첫번째 이유는 어렵지 않습니다.

시뮬레이션 문제들은 떠올린 풀이를 코드로 적으며 엣지 케이스를 막으면 끝입니다. 알고리즘 문제를 어떻게 풀어야할지 연습하면서 사고력을 키울 수 있습니다.

두번째 이유는 삼성 기출문제를 풀 수 있을 정도면 대부분의 코테에서 절반은 풀 수 있습니다.

이정도 레벨이면 백준 기준 골드 4~5정도 될텐데요. 대부분 코테는 실버~골드 4 정도입니다. 잘 모르는 유형의 문제가 나와도 억지로 구현하면 절반은 먹고 들어갑니다.


다음은 그래프, DP, PQ, 위상 정렬 등 코테에서 종종 만날 수 있는 유형의 문제를 풀어야 합니다.

여러 알고리즘을 익혔다면 알고리즘 + 구현 능력이 필요한 카카오 기출문제를 통해 문제 푸는 연습을 합니다.

programmers.co.kr/learn/challenges?tab=all_challenges

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

카카오 코테 백준 난이도 - kakao kote baegjun nan-ido

코테 중 가장 어려운 게 카카오입니다. 카카오 기출 문제를 풀 정도로 연습을 하면 대부분의 코테는 무리없이 풀 수 있을 것입니다.

백준 문제를 많이 풀 수록 다양한 유형의 문제를 풀게되므로 구현 능력이 좋아져서 문제를 어렵지 않게 풀 수 있습니다. 꾸준히 백준 푸는 것이 좋다고 생각합니다.

백준 300문제일 때부터 코테를 보기 시작해서 500문제를 넘겼을 때도 코테를 봤는데 확실히 되돌아보면 체감이 많이 났습니다. 특히 문제를 읽고 풀이가 떠오르는 시간이 많이 단축되었습니다.

카카오 코테 백준 난이도 - kakao kote baegjun nan-ido
풀었던 문제의 유형

개인적으로 생각하는 난이도는 카카오 > 라인 > 삼성 > 네이버 입니다.

그 외의 회사는 대부분 코테 평균 난이도가 골드 5도 안 될정도로 쉬웠습니다. 

코테를 보기 전 그 회사의 이전 기출 문제 레벨이나 유형을 미리 알면 큰 도움이 되므로 최대한 검색을 해서 어떤 유형의 문제가 나오는지 알고 들어가시길 바랍니다.

1차 합격 기준은 총 7 문제 중 4 문제 이상을 풀이한 분들.

각 문제는 배점이 동일하므로 어떤 문제를 풀었던지 간에 관계는 없습니다.

코딩테스트 연습 - 튜플

"{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]

programmers.co.kr

총 7문제가 출제됐고, 응시자는 5시간 이내에 순서와 상관없이 문제를 해결해야 했습니다.

2022 카카오 블라인드 채용 1차 코딩테스트에 참가했다. 

카카오 코테 백준 난이도 - kakao kote baegjun nan-ido

정확히 2시간 30분 소모했고, 그중 절반을 7번에 쏟아부었다.

구현과 완전 탐색 문제가 조금 많기도 하고, 6번이 웰논이라 개인적으로 지난여름 인턴십 코딩테스트 문제가 조금 더 괜찮았고 난이도도 높은 느낌이다. 작년 블라인드를 경험해보지도 못했고, 너무 블라인드 코테에 대한 악명을 많이 들어서인지 기대만큼은 아니었다. 

문제나 코드를 업로드할 수 없어 간단하게 과정이나 풀이만 설명하겠다. 

1.

유형 : 구현 / 문자열 / set 

예상 난이도 : Silver V ~ Silver IV

제한이 작고 간선이 중복될 수 있으므로, set배열을 선언해 각 문자열마다 자신에게 들어오는 문자열을 넣어주었다. 

2. 

유형 : 문자열 / sqrt(n) 소수 판별

예상 난이도 : Silver V ~ Silver IV

문자열을 바꾼 후 소수가 몇 개 존재하는지를 판별하면 된다. 만들어진 수에서 0을 기준으로 모두 분리했을 때 각 수 별로 소수인지 체크하면 된다. 제한이 작기 때문에 2 ~ sqrt(n)까지 직접 나눠보는 소수 판별법을 사용해도 충분하다.  

3. 

유형 : 문자열 / 파싱 / map

예상 난이도 : Silver IV ~ Silver III

코테에서 매우 자주 나오는 것 같은, 시간이 주어지는 문자열 파싱 문제이다. IN인 경우엔 map에 시간을 저장하고, OUT인 경우엔 map에 저장된 시간과의 차를 이용하여 더해준다. 

4. 

유형 : 완전 탐색 & 백트래킹

예상 난이도 : Silver III ~ Silver II

다른 사람들의 풀이를 들으니 비트마스킹을 쓴 사람이 많은 것 같다.

사실 n이 최대 10이므로 모든 경우를 고려해도 $_{11}H_{10} = _{20}C_{10}$, 대략 20만 가지의 경우밖에 나오지 않는다. 따라서 완전 탐색과 백트래킹을 이용해서 화살을 쏘는 모든 경우를 다 구한다. 

현재 경우가 답이 되는지를 판단하는 시간까지 고려하면 대충 200만 ~ 600만 번의 연산이 필요하다. 

5. 

유형 : 완전 탐색 & 백트래킹

예상 난이도 : Gold V ~ Gold IV

완탐의 연속이다. 이 문제 또한 비트마스킹, bfs 등 다양한 풀이가 나왔는데, 마찬가지로 제한이 매우 작아서 완전 탐색으로도 충분히 해결 가능하다. 

방문할 수 있는 점들은 지금까지 방문한 점들의 자식 정점이면서 아직 방문하지 않은 정점이다. 이 중 양이 잡아먹히지 않으면서 갈 수 있는 모든 경우를 다 고려한다. 새로운 점을 방문한다면 추가로 방문할 수 있는 점은 최대 2개씩만 늘어나기 때문에 시간 내에 충분히 돌아간다.

6. 

유형 : 누적 합

예상 난이도 : Gold III ~ Gold II

웰논 문제임을 풀이 시간으로 증명하고 있다. 1 ~ 7번 문제 중에서 가장 시간이 적게 걸렸다.

2차원에서 어떤 직사각형 범위의 칸에 값을 더해주는 쿼리는 직사각형의 네 꼭짓점 부분에만 연산을 해준 후 마지막에 한번 훑어서 완성할 수 있다. 

정확히는 (x1, y1) ~ (x2, y2)에 값을 더해줄 때, (x1, y1)은 더해주고 (x1, y2+1) & (x2+1, y1)은 빼주고 (x2+1, y2+1)에 더해준 다음 왼쪽 위부터 오른쪽 아래로 누적합을 계산해주면 된다. 

자세한 설명은 https://hellogaon.tistory.com/75 의 I. 색종이와 쿼리의 풀이 1단계에 잘 나와있다.  

7. 

유형 : 게임이론 / 재귀

예상 난이도 : Platinum V ~ Platinum IV

게임이론이 코테에 나올 줄은 몰랐다.... 문제를 잘못 이해해서 푸는데 꽤 오랜 시간이 걸렸다. 

A를 기준으로 이기는 경우는 최대한 빠르게, 지는 경우엔 최대한 느리게 끝나야 하므로 pair를 반환하는 재귀를 사용했다. first는 최소, second는 최대가 되도록 유지했다.