슬기로운개발생활

2020 카카오 여름 인턴십 코딩테스트 후기 본문

Career

2020 카카오 여름 인턴십 코딩테스트 후기

슬기로운개발자 2020. 5. 29. 13:30

저번 카카오 블라인드 코딩테스트는 떨어졌지만...이번엔 붙었다!

카카오 여름 인턴십 코딩테스트는 프로그래머스에서 5.9(토) 14:00 ~ 18:00 까지 시행됐고, 총 5문제가 출제됐다.

역시나 코딩테스트전엔 긴장이 됐고, 문제를 쭉 훑어봤다.

몇몇 문제는 효율성 테스트도 포함되어 있어서 문제를 풀기 전에 먼저 어떻게 해야 시간초과가 나지 않을지 생각해보는게 중요하다.

1번은 처음 문제답게 쉬운 문제가 출제된 것 같다. 평소에 백준에서 삼성 A형 기출을 많이 접해본 사람이라면 쉽게 해결할 수 있는 구현문제 였다.

2번은 완전탐색을 이용한 연산자 관련 문제였다. 이와 비슷한 문제도 백준에 많이 봤던 것 같은 느낌이 들었다. 나는 DFS와 List 자료구조를 사용해 풀이했다. 이 문제에서 시간이 좀 잡혔는데, List와 Vector의 erase 함수 사용시 주의사항을 몰라서였다. 이것 때문에 한참 걸렸다. 결국 풀긴 풀었지만 ㅠㅠ

	// vector는 erase수행 후 다음 index를 가리키지만, 에러가 난다. 다음 for문이 작동되지 않음
	vector<int> a = { 1,2,3,4 };
	for (auto iter = a.begin(); iter != a.end(); iter++) {
		if (*iter == 1)
			a.erase(iter); 
	}
	// iter가 가리키는 포인터가 날라가버림.
	list<int> b = { 1,2,3,4 };
	for (auto iter = b.begin(); iter != b.end(); iter++) {
		if (*iter == 2)
			b.erase(iter); 
	}
	// 가장 안전한 방법, vector도 마찬가지
	list<int> c = { 1,2,3,4 };
	for (auto iter = c.begin(); iter != c.end(); iter++) {
		if (*iter == 2)
			iter = c.erase(iter); 
	}

 

3번은 효율성 점수가 포함된 문제였다. 풀 땐 몰랐는데 나중에 이러한 문제방식이 투포인터, 슬라이딩 윈도우 방식이라는 것을 알게되어 다시 공부할 수 있었다. 이 방법을 알고있던 사람들에겐 쉬울 수 있지만, 모르는 사람들이였으면 정확도는 해결할 수 있어도 효율성은 해결하기 어려울 수도 있다.

4번은 memoization 문제 같았다. 이 용어도 코딩 테스트가 끝나고 알게되었다(ㅋㅋ). 결국 완전탐색을 수행하면서 가지치기를 잘해야 시간초과가 나지 않고 해결할 수 있는 문제인 것 같았다.

5번도 효율성 점수가 포함된 문제였다. 문제 이해하는데만 한참 걸렸던 문제였던 만큼 너무 어려웠다....나중에 사람들 말을 들어보니 priorityQueue나 위상정렬, DFS 등등으로 풀었다고 들었다. 그런데 나는 UnionFind로 정확도 문제는 풀었지만, 효율성에서 몇몇 테스트 케이스 실패가 떴다 ㅠㅠ. 나중에 문제 조건을 자세히 읽어보고 생각해보니 UnionFind로는 풀지 못할 문제같다...코딩 테스트가 끝난 후 위상정렬로 시도해보았지만...프로그래머스에 문제가 게시된다면 다시 해보도록 해야겠다.

 

그렇게 결국 카카오 여름 인턴십 코딩테스트는 4.5/5 솔로 끝났다. 코딩 테스트 컷은 3~3.5솔 되는 것 같다. 3.5솔 이여도 서류에서 떨어진 사람들도 있으니 꼭 서류도 신경써서 작성하시길....

그리고 기다리던 도중 코테+서류 합격 안내!!ㅎㅎㅎ 면접후기로 찾아뵙겠습니다.

합격 메일

Comments