[알고리즘] 새벽비 감성에 젖어 쓰는 코테 (망한) 후기

이찬형·2020년 5월 18일
1
post-thumbnail

카카오 인턴쉽 코딩테스트

5월 9일 14시, 카카오 인턴쉽 코딩테스트가 있었어요.

스펙도 없고 개발경력도 적고, 가진 건 전역증과 자격증 5개가 전부였지만 경험삼아 해보자!! 라는 마인드로 카카오 인턴쉽에 지원했습니다.

사실 FE 개발자를 목표로 하면서 알고리즘에 큰 가중치를 두지 않았어요. 리액트 코드를 짤 때나 다른 프론트 파트 코딩을 할 때 알고리즘이 그렇게 많이 쓰이지 않았기 때문인 것 같아요.

그냥 학교 수업 따라갈 정도로 배워두자.. 란 생각이 컸기 때문에 백준도 슬렁슬렁 풀었고, 솔직히 solved.ac 골드 찍었으니깐 3문제는 풀 수 있겠다는 안일한 생각과 함께 시험에 임했습니다.

그렇게 대참사가 일어났어요.
1번 정말 쉬운 문제였는데.. 그냥 구현만 하면 끝인 문제였는데 2시간 30분을 쏟아부었습니다. 겨우 풀긴 했지만 이건 누가봐도 좋은 코드가 아니다란 생각이 들 정도의 코드를 짰어요. 거기다 자잘한 실수까지.. 괄호 이상한 곳에 붙이고, 초기화를 0이 아닌 -1로 하는가 하면 ㅋㅋ.. 난장판이었습니다 말그대로ㅠㅠ

남은 1시간 30분은 문제 구경만 하다 끝났습니다. 2번은 문자열 문제였는데, 아이디어는 있어도 문자열 처리 문제를 거의 안풀었기 때문에.. 바라만 보다가 넘어갔습니다.

3번은 정확성, 효율성 두 가지를 본다고 해서 바로 건너뛰었어요. 생각이라도 한 번 해볼껄.. 4번은 딱 봐도 bfs 문제이길래 이건 풀겠다!! 했는데 방향이 바뀌는 걸 어떻게 잡을까 한 30분 고민하고.. 시간이 부족해서 그냥 설계안하고 구현하다 이상한 답 나와서 하.. 어떡하지.. 하다가 끝났네요.

우아한형제들 여름 코딩캠프

5월 10일엔 우아한형제들 여름캠프 코딩테스트가 있었습니다.

4문제 중 무려.. 3문제나 풀었어요!! 테스트케이스만 통과한 것이라 확실하게 맞았는지는 모르겠지만 카카오에서 으깨진 멘탈이 조금이나마 회복이 됐습니다ㅠㅠ

그래도 4번 문제를 풀지 못한 것이 아쉽습니다. 접근 방향도 생각이 나질 않아서 그냥 빈칸으로 놔두었는데.. 이걸 풀었냐 못 풀었냐에 따라 합불이 나뉜 것 같아요.

그리고 다시 한 번 느끼는건데, 제출한 코드가 상당히 난잡했습니다. 불필요한 변수도 많이 써서 메모리 낭비가 있었고 급한 마음에 예외가 정말 많이 발생했어요..

JS만 사용해서 진행된 코테였는데, 그나마 친숙한 언어지만 시험만 시작하면 낯설게 보이는지ㅠㅠ

문제점을 좀 분석해보면서 어떻게 준비를 해야할 지 끄적여보겠습니당

부족했던 점

1. 문제를 대충 읽었다.
카카오 1번 문제 키 배열 순서가 (1, 2, 3) / (4, 5, 6) / (7, 8, 9) 였는데 반대인줄 알아서 디버깅하는데 시간을 많이 날렸습니다.

2. 문자열 문제를 연습하지 않았다.
문자열 처리 문제는 항상 나오는데도 귀찮다는 이유로 공부를 안했습니다. 반성..

3. 설계를 하지 않고 코드부터 짰다.
카카오 1번에서 시간 많이 먹은 두 번째 요소에요. 짜다 보면 되겠지~ 하면서 코딩했는데 예외가 정말 많이 나왔습니다.

4. 시간 분배를 잘못했다.
평소 PS 할 때 한 문제에 2시간, 3시간.. 그 이상으로 느긋하게 풀었던 것이 독이 되었습니다.

앞으로 할 일

1. 백준 아이디 새로 만들어서 문제 풀기
이게 solved.ac 골드를 달았다는 뿌듯함 때문에 역효과가 나는 것 같아서.. 계정을 새로 파서 문제를 풀겠습니다. (ID: c01d_br0th3r)

2. github에 Write-up 작성하기
포너블 문제는 전부 블로그에 라이트업을 썼는데, 이게 생각보다 도움이 많이 되었어요. 알고리즘 문제도 어떻게 풀었는지, 어떤 기법을 썼는지 글로 정리하며 심심할 때마다 읽어보도록 하겠습니다.
https://github.com/c01d-br0th3r/baekjoon_writeUp

3. 정형화된 풀이 방법 만들기
이것도 중요하다고 느꼈어요. 수학 공식처럼 문제를 보고 어떤 알고리즘을 써야 할지 정했다면 풀이 그대로 따라가야 할 필요가 있다고 느꼈습니다. 이게 안 돼있으니깐 어떨 땐 초기화를 이상하게 하고, 시작 포인트를 못 잡고.. 좀 어수선한 느낌이 들었어요. 코드가 난잡해지는 이유도 이것때문이라고 생각합니다. 구종만 알고리즘 책을 읽어가며 정석 풀이를 따라가도록 하겠습니다.

4. 부족한 부분을 계속 연습한다. 더 많이 푼다.
대표적으로 이분탐색.. 정말 쉬운 알고리즘인데 이거 알아~ 란 마인드로 직접 코딩을 안 해보고 넘어갔어요. 그래서 막상 구현하려고 하니 버벅이더라구요. 그래서 확실히 제 손으로 코딩하고 익히도록 하겠습니다. 또, 안되면 더 많이, 될 때까지 풀겠습니다.


알고리즘과 포너블 공부는 비슷한 부분이 많은 것 같아요.

생각이 안 나면, 아이디어가 없으면 며칠이 지나도 못 풉니다. 때문에 남의 풀이, 코드를 보고 이건 이렇게 푸는 것이구나!! 라는 걸 느낀 후 비슷하지만 다른 문제를 풀며 적용해야돼요.

이번 코테를 발판삼아 더욱 열심히 공부하겠습니다.
올 겨울엔 더 많은 문제를 건드려 볼 수 있도록..!!

profile
WEB / Security

0개의 댓글