프로그래밍에 대한 고찰 및 생각

[1][코딩테스트] 2021 카카오 채용연계 여름 인턴십 for Tech Developers - 코딩 테스트 후기 본문

인턴십/카카오

[1][코딩테스트] 2021 카카오 채용연계 여름 인턴십 for Tech Developers - 코딩 테스트 후기

Source 2021. 5. 17. 00:06

 

 

 

생애 첫 코딩테스트

대학교 1학년때 교내 프로그래밍대회에서 운좋게 수상하여 네이버 D2에서 주최하는 프로그래밍대회 본선에 나간적이 있었는데 그당시에는 알고리즘이 무엇인지도 몰랐고 코딩을 시작한지 반년도 채 되지않은 나에겐 너무나도 어려웠다.

 

당연히 등수는 아래부터 찾는것이 빨랐다.

 

그동안 알고리즘 공부를 많이 해오면서 실제로 기업의 코딩테스트를 본적은 없었는데 이번 카카오가 그 첫번째 코딩테스트였다.

 

사실 이번 카카오 여름 인턴십은 코딩테스트를 경험해보고 싶어서 지원한 것도 있었다.

 

시험날짜는 2021년 5월 8일 오후2시.

 

4시간동안 진행되었고 총 5문제가 출제되었다.

문제 보러가기

 


 

1번 문제

 

영어 알파벳으로 숫자를 받아서 해당 문자를 매칭되는 숫자로 변환해주는 문제였다.

 

예를 들어 onetwothree 라는 입력이 주어지면 123 을 리턴하는 형식이다.

 

들어온 문자열과 문자를 비교해서 숫자로 변환해주면 되는 간단한 문제였다. 

 

백준 티어로보면 브론즈1,2 ~ 실버4,5 이지 않았을까 싶다.


2번 문제

 

이번 코로나 거리두기와 관련된 문제였다. 

 

5x5 배열에서 사람, 책상, 빈공간이 주어지고 각 사람마다 2칸이상 떨어져야 거리두기를 잘했다고 할때 주어진 케이스들의 거리두기 여부를 문자열로 출력하는 문제였다.

 

BFS를 이용하면 되는문제로 어렵지 않았다. Input size도 5 by 5 로 크지않아 별다른 최적화 없이 진행했다.

 

백준 티어로 보면 실버1,2~골드4,5 정도 였던것 같다.

 

1,2번까지는 각 10분, 30분으로 총 40분만에 해결하였다.


3번 문제

 

여기부터가 문제였다.

 

1차원 구조에서 특정 셀을 선택하고 이동할수 있으며, 해당 행을 삭제할수 있고 최근에 삭제한 행을 다시 복구할수 있을때 주어진 명령어들을 수행한 뒤 사라진 행을 구분하는 문제였다.

 

행들이 중간중간 비어있을 수 있고 다시 복구할 수도 있기에 인접리스트를 사용하였다.

 

그리고 복구는 가장 최근에 삭제된것부터 진행되기에 stack구조를 사용하였다. 

 

해당 문제는 정확성과 효율성을 모두 보는 문제였는데 정확성부분에서는 통과를 했는데 효율성 부분에서 계속 통과를 하지 못했다.

 

아무리 살펴봐도 로직상에서 시간초과가 나올 수 있는 부분이 없었다.

 

코드를 살펴보던중 의심될만한 부분은 최종 정답 배열을 만드는 부분(string + char) 이였다.

 

이부분을 append로 바꾸었더니 효율성도 통과를 하였다. 이부분에서 거의 1시간넘게 헤맨것 같은데 그래도 풀었다는 안도감과 사소한것에 오랜시간을 쓴것에 대한 허탈함도 있었다.

 

이문제는 골드1~2정도로 예상한다.


4,5번 문제

 

그리고 남은 약 1시간동안 4,5번을 풀어보려고 했으나 문제가 쉽지 않았다. 

 

5번문제는 내가 풀 수준이 아님을 직감하고 그나마 자신있는 문제였던 4번 그래프문제에 도전하였다.

 

하지만 4번문제도 쉽지않았다. 

 

결국 1,2,3번 문제만 해결한 채 코딩테스트가 종료되었다.

 


 

코딩테스트 종료

보통 알고리즘 문제를 풀면 길게는 2시간 이상 걸리기도 하는데 스트레이트로 4시간동안 알고리즘 문제를 풀어본 적은 없어서 과연 4시간동안 집중을 유지할 수 있을까 걱정도 있었다.

 

만약 혼자서 푸는 알고리즘 문제였다면 4시간 집중을 유지하기 어려웠을텐데 코딩테스트라는 특별한 환경이여서 4시간이 짧게만 느껴졌다.

 

그리고 3번 문제에서 많은 시간을 날렸다는 안타까움과 4번문제를 해결하지 못했다는 아쉬움이 남았다.

 

알고리즘 공부를 아주 많이 해온것은 아니였지만 그래도 그동안 문제들을 풀면서 4번문제정도면 충분히 도전해 볼 만한 수준이라고 생각했다. 

 

앞으로 더 많은 문제들을 풀어보고 연습해야겠다는 생각이 들었다.

 

 


 

결과

코딩테스트를 본 뒤 약 1주일뒤 5월 14일 오후쯤에 코딩테스트 결과가 나온다고 공지가 있었다.

 

사실 이번 코딩테스트 커트라인이 3~3.5일것이라고 예상했다.

 

(4,5번 솔직히 좀 어려웠다.)

 

오후부터는 메일창을 계속 확인했던 것 같다.

 

그리고 메일이 도착했다.

 

 

 

기대를 안했다고 하면 거짓말이고 그래도 떨어졌을 확률이 더 높다고 생각했는데 운좋게 합격하였다.

 

그래도 2020년 초부터 지금까지, 꾸준히는 아니여도 알고리즘 공부에 적지않은 시간을 투자해 왔었는데 첫 코딩테스트에서 떨어지면 어떡하지 라는 걱정이 많았는데 참 다행이다.

 

지금까지 투자해왔던 시간이 그래도 배신은 안한것 같다.

 

이제 서류와 면접이 남아있는데 잘 준비해서 좋은 경험을 쌓아보고 싶다.

 


다음 이야기 : https://source-sc.tistory.com/63