2021년 9월 10일 오후 2시 카카오 블라인드 공개채용 코딩테스트가 진행되었습니다.

 

작년에는 5문제 밖에 못풀었기에 1년뒤인 지금의 실력을 테스트해보고 싶어 참가하게 되었습니다.

코딩 테스트의 난이도가 악명 높은 카카오답게 재밌는 문제가 많았습니다.


1.(단순구현)

K번 이상 신고당해서 정지를 받은사람이 생기면 해당사람을 신고한 사람한테 메일을 보내는 문제였습니다.

신고내용이 문자열로 주어지기 때문에 파싱이 필요하고 사람들의 정보를 관리하기 편하게 맵을 사용하는 문제였습니다.

1번답게 쉬운문제였습니다.

 

 

2.(소수판별)

문제가 조금 이해가 안되서 조금 얼탔습니다. 천천히 문제를 읽고 이해해보니 어려운 문제가 아니였습니다.

N을 K진법으로 변환한 숫자를 0을 기준으로 잘라서 숫자배열을 만들고

해당 숫자배열에서 소수가 몇개인지 알아내는 문제였습니다.

단 자른숫자의 자릿수가 클수가 있기때문에 int말고 long long을 써야됩니다.

 

 

3.(단순구현)

자동차가 들어오고 나간시간을 계산해서 주차요금이 얼마인지 계산하는 문제입니다.

자동차가 들어오는 시간도 문자열로 들어오기 때문에 파싱이 필요합니다.

마지막까지 나가지 않은 차량에 대해서 처리하는 과정만 빼면 주의할건 없었습니다.

3번 치곤 1번이랑 난이도가 별로 다르지 않아서 빠르게 풀고 넘어갔습니다.

 

 

4.(DFS)

과녁에 활을싸서 어피치보다 최대한 높은 점수를 받는 경우를 찾는 문제입니다.

어피치가 10점 과녁에 A번맞췄다면 라이언은 해당 과녁에

(0 or A+1)번을 맞추면된다는 사실을 깨닫는게 중요합니다.

0~10번까지 과녁이 있기 때문에 모든 경우의 수를 고려하면

211 의 경우의 수밖에 나오지 않습니다.

 

 

5.(메모이제이션)

양을 최대한 많이 루트노드로 데려오는 문제입니다.

일단 루트노드로 돌아오는 경우는 고려할 필요가 없습니다.

그래프가 트리모양이기때문에 돌아오는 길은 이미 방문한 곳이기 되기 때문입니다.

그리고 노드의 숫자가 17개밖에 되지않았기 때문에

217개의 상태로 방문여부를 표시할 수 있다는 것을 쉽게 알 수 있었습니다.

현재 방문상태로 2가지 정보를 파악 할 수있습니다.

첫번째는 현재데리고 있는 양과 늑대의 숫자를 파악할 수 있고

두번째는 다음 이동할 노드를 파악할 수 있습니다.

 

 

6.(2차원 누적합)

범위 (sx,sy)~(ex,ey)의 합은

[(1,1)~(ex,ey)] - [(1,1)~(sx,ey)] - [(1,1)~(ex,sy)] + [(1,1)~(sx,sy)]이라는 사실을 알면 쉽게 풀 수 있습니다.

저는 누적합에 약한편이라 해당 문제를 고생해서 풀었습니다.

2D세그먼트 트리를 구현하기도하고.. 펜윅트리를 만들기도하는등.. 

사람들은 웰논이라고 하지만 저는 조금 어려운편이였습니다.

 

 

7.(게임이론 , DP??)

7번은 게임이론내용이라 보자마자 못풀것 같다는 느낌을 매우 강하게 받았습니다.

코딩테스트에 무슨 게임이론이 나오나 이런 생각이 들었습니다. ㅠㅠ

테스트가 끝나고 다른 사람들의 이야기를 들어보니 완전탐색으로 모두 고려하면 되는 문제라는 사실에

큰 충격을 받았습니다. 다시 생각해해보니 천천히 문제를 침착하게 읽었으면 풀었을거 같았습니다.

 


이번 카카오블라인드는 6문제를 풀 수 있었습니다.

작년과 비교해서 한문제 더 풀 수 있게 되었고 프로그래머로서 성장했다는 것을 알 수 있었습니다.

+ Recent posts