[SW마에스트로 11기 후기] 2. 코딩테스트

·2021년 2월 18일
31

SW마에스트로

목록 보기
2/4
post-thumbnail

주변에서 소마 관련된 질문 중에 가장 많이 들은 게 "소마 코테 어때?" 였다.
그럼 내 대답은 항상 "너 정도면 붙어" 다. 상대방이 누구든.
왜냐면 나한테 이걸 물어볼 정도면 어느 정도 관심이 있다는 건데, 코딩 좀 해봤으면 진짜 해볼만하고,
안 해봤대도 당장 내일 시험이 아니니까 시간도 꽤 있으니 지금 시작해도 할만한 정도라고 생각한다.
(내가 이 글을 1월 달에 쓰다말았는데 미루는 동안 한 달이 지나버렸다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 저 때보단 늦었지만 그래도 지금 시작해도 괜찮다고 봄)

물론 내 개인적인 생각이긴 하고, 11기 코테 기준이다. 난 그 전 꺼는 안 봐봤으니까.


온라인 코테

코로🦠가 소마 일정을 다 꼬아놨었다. 선발도 늦어지고, 행사도 다 취소되고, 교육도 전날 갑자기 미뤄지고.. 난리였다.

원래 코딩테스트 일정도 3월 중 오프라인이었던 걸로 기억한다.
이때까지만 해도 다들 몰랐지 아직까지 마스크를 쓰게될 줄..
대학교들이 개강 미루듯 코테도 찔끔찔끔 미루다가 1차 온라인 2차 오프라인으로 바뀌게되었다.

1차 코테는 3월 14일에 봤다. (결과 발표는 3월 25일에 나왔다.)
사무국에서 때를 기다리며 다음 코테를 미루고미루다 답이 없다 싶어졌는지 2차도 온라인이 되었다.

2차 코테는 4월 26일에 봤다. (결과 발표는 4월 29일에 나왔다.)

더 늦어지면 안 된다고 생각한 건지 발표가 빨리 나와서 당황했었고 갑자기 다음 주 면접..
진짜 부랴부랴 준비하느라 + 중간고사랑 겹쳐서 힘들었던 기억이다.
그리고 제일 걱정이었던 건 내가 첫날 첫타임이라는 거^^..................아 진짜 울고 싶었다..

아무튼 온라인이라 시험장에 가야한다는 귀찮음이 사라져서 좋긴 했지만 이걸 부정행위 방지를 대체 어떻게 하겠다는 건지, 변별력이 있는 건지 걱정도 컸었다.
이제와서 생각해보니 왜 캠을 안 켰지? 올해부턴 바뀔 것 같다.

기존과 달라진 코테

주변에 소마 경험자들에게 물어봤을 때 코테는 시간은 짧고 양은 많고 알고리즘 자체는 어렵지 않다 고 했다. 그래서 내가 풀 수 있는 문제를 빠르게 캐치해내면 된다고 했다.
그런데 코테 안내 메일이 왔을 때 좀 놀랐다.


여기서 SQL이 왜나오고 웹이 왜 나와요.......? 🤯🤯🤯
알고리즘은 해봤지만 SQL은 학교 수업이랑 과제 해본 게 전부고 웹은 어떻게 생겼는지도 모르는데요...
(나중에 들어보니 이전 기수에서 코테 관련 피드백을 거쳐서 바뀐 것 같다.)

그치만 알고리즘 자체가 어렵지 않다는 건 사실이었다. SQL도 간단한 문제가 나왔다.
웹은 난 잘 몰랐는데, 얘도 나중에 들어보니 좀만 알면 풀 수 있는 정도였다고 한다.

그리고 1차 때 서버 터져서 딜레이되고, 분명 답이 맞는데 자꾸 틀렸대서 한참 시간 잡아먹었는데 나중에 정정돼서 시간 날린 꼴 되고 (1차는 좀 쉬웠어서 시간이 널널해서 다행이었지 2차 때 이랬으면 화냈을 듯)
뭐 이런저런 문제가 많았었던 것 같다.

이런 폭풍을 겪어봤으니 아마 올해부터는 사무국 분들이 잘 대처하실 거다.
소마 해 본 사람들은 다 알겠지만 사무국 분들 진짜 열심히 애써주시고 연수생한테 너무 잘해주신다 ㅠㅠ


위에는 그냥 내가 하고 싶은 말이었고 여기부턴 진짜 코테 후기

1차 코딩 테스트

사실 1차 때 문제는 복기를 안 해놔서 잘 기억 안 난다.
그만큼 쉬웠고, 내 답에 확신이 있었다. 이거 어떻게 풀었냐고 물어보면 이렇게 풀었다고 말할 수 있을 것 같았다.

알고리즘 문제를 읽으면 얘는 이렇게 풀어야겠네가 딱 보였다.
문제 내용이 하나하나 탐색인데 사이즈도 작고 하니까 브루트포스 해야겠구나 싶은? 어쨌든 PS를 조금 해봤다면 바로 풀이가 보이는 정도의 난이도였다.
수학 같은 건 내가 이런 식 세우는 PS에 약함에도 불구하고 머리 좀 굴려보니까 풀 수 있었다.
웹 빼고 네 문제 다 풀고 30분이나 남았다. 나 같은 애가 이렇다는 건 정말 할만하다는 거다.

나는 SQL 먼저 풀었다. 나중에 친구들이랑 후기 공유했을 때 대부분 그렇게 했다더라. (아니면 문제는 알고리즘부터 한 번 쭉 읽은 후에 푸는 거는 SQL 먼저)
얘도 SQL 문법만 알면 바로 풀 수 있는 난이도였다. 막 꼬는 것도 없고 뭐 이너조인이니 뭐니 그렇게 고민을 할 것도 없었다.
쉬우니까 빨리 해결하고 알고리즘 쭉 푸는 게 좋은 것 같다.

여담이지만 SQL 문제를 제출했는데 틀렸대서 네 다섯 번 시도하다가 내려놓고 알고리즘 푸는데 30분 쯤 지났을 때 갑자기 알림 오고 1트 때 답이 맞았다고 나오길래 화가 많이 났었다...
그리고 시작할 때 서버 터지고 난리였어서 그날 저녁에 테스트 진행됐던 플랫폼 대표님 (알고보니 소마 수료생이고 멘토님) 께서 사과 메일을 보내주셨는데 메일 내용이 너무 귀여워서 용서됐다.😅

2차 코딩 테스트

1차보다 어려웠다.
SQL은 비슷했지만, 알고리즘은 확실히 난이도가 올라갔다는 게 보였다.

내가 문제를 풀었던 흐름을 비교해보자면

1차
문제를 읽는다 → 이렇게 풀면 되겠네 생각하고 바로 코드 작성 → 예제 확인 → 제출

2차
문제를 읽는다 → 고민한다 → 이게 이렇게 풀리나...? 끄적끄적 → 이렇게 풀자 하고 코드 작성 → 예제 확인 → 디버깅 → 제출

정도?
고민 과정을 거치긴 해야하는데 엄청 어렵진 않았다.

DP 문제를 보자마자 점화식이 바로 떠오르지 않더라도, 머리를 좀만 쓰면 식을 쓸 수 있고, 식이 그닥 복잡하지 않다.

내 기준 어려운 문제
문제를 읽는다 → 고민한다 → 이게 이렇게 풀리...지 않지 → 고민... 끄적끄적.. → 아니네.. 다시 끄적끄적 → 일단 이렇게 해보자 하고 코드 작성 → 예제 확인 → 디버깅 → 디버깅 → 디버깅 → 제출

이렇게 꼬아 생각하지 않아도 될 정도라는 거다.

탐색 문제에서 내가 이런 문제를 풀어 본 적이 있다면 이 알고리즘을 써야겠다! 가 보이고, 그래서 그 때 내가 썼던 코드가 기억이 난다면 풀 수 있는 정도다.
이것도 한 가지 방법으로 답이 고정되어 있는 게 아니라서 나는 Union-Find 라고 생각하고 풀었었는데, 친구는 DFS로 풀었다고 했었다.

두 문제는 그랬다. 근데 남은 하나는 아니었다. (사실 그래서 나는 떨어질 줄 알았다.)
이 문제를 틀렸?다기 보다는 문제에서 주어진 범위를 이중 포문으로 풀어버리면 시간 초과가 날 거라는 걸 알았다.
문제에 시간 제한이 없긴 했다. 그치만 범위를 보면 출제 의도가 이게 아니라는 거니까...
그래도 틀린 답은 아니니까 일단 내보자 하고 냈다.
근데 합격?읭???? 다들 틀린 건지, 시간보다 정확도를 재는 건지, 맞은 테스트 케이스 갯수가 중요한 건지..
결론은 일단 뭐라도 내보는 게 좋은 것 같다.


코딩 테스트 팁

평소 코딩테스트 공부 방법은 나중에 포스팅 해보려고 하는데, 소마 코테에 대한 팁을 살짝 적어보자면

1️⃣ 백준은 꾸준히

알고리즘 공부를 한다면 누구나 알테지만, 백준 온라인 저지 문제가 공부하기 정말 좋다.
내가 주로 애용하는 방법은 알고리즘 분류 에서 하고 싶은 거 고르고, 제출 수나 정답률이 멀쩡하다 싶은 문제들 먼저 푸는 거다.
이 방법의 단점은 내가 어떤 알고리즘으로 풀어야할지 힌트를 얻은 후에 문제를 풀어서 도움이 안 될 수도 있지만, 사실 난 연습할 땐 그 정도 힌트는 있어도 된다고 본다.
어쨌든 백준은 그냥 꾸준히 하자. 미래의 나를 위해서.

2️⃣ 프로그래머스 연습문제

프로그래머스 코딩테스트 연습에 SQL 고득점 Kit 라는 게 있다.
SQL을 아예 모른다면 이론 공부를 먼저 해야겠지만, 나처럼 너무 오래돼서 기억을 되살려야겠다 싶을 때 연습 문제 풀어보기 딱 좋은 것 같다.
아니면 연습문제에 나오는 내용으로 검색해가며 공부해도 좋을 것 같다.

시험 보기 하루이틀 전에 얘만 풀어봐도 문제 없다고 본다. 난이도도 비슷하다.

그리고 프로그래머스 로그인 한 김에 알고리즘 문제도 풀어보자.
사실 나도 아직 다 안 풀었다. 코테 전 날 완전탐색은 다 풀고 DFS/BFS, DP는 한 문제 씩 풀었다.
나는 백준파라서 프로그래머스 문제는 소마 코테 전날 처음 풀어봤는데, 생각보다 문제 난이도도 괜찮고 입출력 부분을 내가 짜지 않아도 된다는 게 편해서 좋았다.

3️⃣ 끝나면 문제랑 내 풀이 적어두기

문제를 유출? 무단 복사? 뭐라하지
아무튼 그런 건 안 되는 걸로 알고 있다. 하지만 내가 내 손으로 내 기억을 적는 건 상관 없지 않은가..

면접장에서 내가 코테 본 게 맞다는 걸 증명하기 위해 내 코드를 설명해야 할 수도 있다.
근데 사람 기억력이라는 게 코테 끝나고 면접날까지 유지될리가 없다.
코드 한 자 한 자를 되살리긴 힘드니까 내가 이런 문제를 어떻게 풀었는지 정도는 적어두자.

여기서 좀더 나아가면 내가 어떤 사고 과정을 거쳐서 이런 풀이를 생각해냈는지 도 적어두면 좋을 것 같다.
(내가 면접 때 알고리즘 설명을 이렇게 했었다.)


사실 별 내용 없는데 너무 길어진 것 같다.
소마 코테를 준비하는 사람들에게 도움이 될 진 모르겠지만 다들 너무 부담갖지 않았으면 좋겠다.
나도 붙었는 걸??? 이 글을 읽는 누군가도 붙게 될 거다.

profile
안녕제인

1개의 댓글

comment-user-thumbnail
2021년 2월 19일

좋은 글 감사합니당 ㅎㅎ

답글 달기