문제는 총 6문제, 시간은 2시간이 주어졌다.
코딩테스트를 준비하기 시작한 이후로 처음 경험한 실제 테스트였다.
결론적으로 나는 1문제만을 맞췄다. ㅋㅋㅋ..
2시간에 6문제라면 한문제 당 20분 안에 풀어야 한다는 것이어서, 난이도는 적당히 나올 거라고 예상했다.
물론 풀어본 문제들 중에서는 막 어려운 편에 속하는 편은 아니였다. (그래 봤자 내가 지금까지 푼 문제들은 20개도 안지만..)
물론 현재 실력이 많이 부족하고 경험도 많이 부족해서 경험하자는 의미에서 적어도 2-3문제만은 완벽히 풀자라고 다짐했지만, 결국 그냥 꽁으로 주어진 문제 하나만을 맞추었다..
아직 실력이 정말 많이 부족한 듯 싶다. 이번 코딩테스트 문제가 공개되면 다시 풀어보며 리뷰를 하겠지만, 아직 공개가 되지 않아서 대략적인 문제 유형들과 난이도, 그리고 나의 문제점 등을 이야기하겠다.
[문제 리뷰]
먼저 1번, 부가가치세 구하기. 주어진 주문금액과 비과세 금액, 봉사료를 통해 결론적으로 부가가치세를 구하는 문제였다. 지문은 대화 형식으로 이루어지면서 대화에서 나오는 힌트들을 통해 구현하는 것이 핵심이었다. 이 문제는 사실 모든 사람이 풀 수 있도록 출제한 것 같다. (하마터면 나는 모든 사람에 속하지도 못할 뻔..) 말로 표현되는 수식들을 코드로 구현하는 것이었다. 중간중간에 헷갈리게 방해를 하는 낚시성 대화도 있었지만, 풀어내는 데에 있어서 큰 어려움은 없었다. 수식도 그저 곱셈, 뺄셈 등으로 구현할 수 있는 형식이었다. 하지만 문제를 제대로 읽지 않아서 조금의 쓸데없는 시간을 보내긴 했다.
2번, 이 문제는 라운드 로빈 형식을 사용한 서버 분배 문제였다. 이런 유형에 대해서는 경험해 본 적이 없어서 한번 읽고 이해가 되지 않아서 그냥 넘어갔다. 그 후 시간 부족으로 다시 보지 못했다.
3번, 가짜 영수증 찾기. 주어진 금액 자체가 정해진 형식에 벗어나는지, 아닌지를 판단하는 문제이다. 이 문제 또한 어려운 난이도는 아니었다. 하지만, 이 문제가 나로선 제일 아쉬운 문제였다. 예시의 5개의 케이스를 통과하고 제출하였는데, 평가 예시(공개되지 않은 예시)의 20문제 중 19문제는 통과되었지만 1문제가 실패로 판단되었다. (여기서부터 나의 코딩테스트는 꼬이기 시작한 것 같다...) 현재로써도 어떠한 문제로 그 1개의 케이스가 실패로 떴는지 모르겠다. 아마 극단적인 예외 케이스인데, 내가 그 케이스에 대해서 인지를 못한 것 같다. 공개되지 않은 예시여서 문제점을 찾을 수가 없기에 일단 넘어가고 나중에 다시 처음부터 차근차근 생각해 냈어야 했는데, 미련하게 그 문제에서만 오랜 시간을 보낸 것 같다.
4번, 유용한 금융 정보. 광고 노출과 관련된 문제였다. 주어진 기간 동안 주어진 횟수만큼 광고를 보여주되, 해당 기간 안에 주어진 횟수를 다 보여주거나, 사용자가 광고를 거부하면 주어진 조건의 기간 이후에 다시 보여주게끔 하는 문제였다. 주어진 기간과 횟수를 적절하게 잘 다루면 풀 수 있는 문제였던 것 같다. 이 문제를 구현할 때는 정말 막힘없이 술술 풀어 나가고 결론까지 도달하고 예시 케이스들도 모두 만족했다. 하지만 3번과 마찬가지로 제출 후 평가 케이스(20개)에서 막혔다. 초반의 10개 정도는 통과를 했으나 뒤로 갈수록 실패했다고 떴다. 이 또한 어떤 것이 잘못됐는지 판단하다 시간만 보내고 해결하지 못했다.
5번, 과일 게임. 과일들의 무게가 저장되어 있는 리스트에서 k개의 과일을 뽑았을 때, 최대 무게를 해당 점수라고 했을 때, 나올 수 있는 모든 점수를 구하는 것이었다. 이 문제는 내가 문제를 제대로 읽지 않은 것인지, 아니면 이해를 못했던 것인지, 마지막 예시 케이스에서 나오는 정답이 이해가 안 되었다. 근데 사실 이해를 했다고 해도 시간 복잡도에서 막혔을 것이다. 일단 예시 케이스를 무시하고 제출한 결과 반 정도가 시간 초과로 실패가 떴다.
6번, 계단 오르기. 한 번에 1-3개의 계단을 오를 수 있을 때, 총 N개의 계단을 올라가는 방법을 구하는 것이었다. 이건 뭔가 지금까지 풀어온 유형들과 좀 비슷하다는 느낌을 받고 BFS로 푸는 방향으로 접근하면 되겠다고 생각했지만, 시간 부족으로 단 1 코드도 적지 못했다.
[문제점]
이번 코테를 통해서 나는 정말 갈길이 멀었구나라고 생각이 든다. 물론 이제 시작이지만, 그래도 본격적인 준비를 시작하기 전에도 계속해서 코딩을 해왔고, 코딩에 어느 정도 실력은 있다고 생각했지만, 오늘 이후로 나 자신을 제대로 알아간 것 같다.
나의 문제들을 한번 살펴보자면, 일단 한 문제에 너무나 많은 시간을 투자한다. 즉, 푸는 속도가 느리단 것이다. 문제를 읽고 이해하는 데에 시간이 오래 걸리는 것 같다. 급한 마음에 문제를 깊게 읽지 않고 급하게 그냥 중요 키워드만을 보고 이해하려 한다. 그래서 오히려 문제를 파악하는 데에 많은 시간이 드는 것 같다. 문제를 이해하면 그걸 코드로 구현하는 데에는 빠르진 않지만 그래도 그렇게 느린 편은 아닌 것 같다. 결론적으로 좀 역설적이지만, 충분한 시간을 투자해서 문제를 완벽히 이해하도록 문제를 천천히 깊게 유심히 잘 보는 연습을 해야겠다. 급한 마음에 중요한 조건이나 예외처리를 놓치고 다시 코드를 짜는 것보다, 천천히 읽어가며 문제를 제대로 파악하는 편이 낫다고 생각이 든다.
다음의 문제는 경험 부족이다. 문제를 많이 풀어보지 않았으며, 이렇게 시간제한을 두고 푸는 연습을 한번도 안했다. 역시 연습과 실전은 다르다. 이제 항상 어떤 문제든 시간 제한을 스스로 두고 푸는 연습이 필요한 것 같다.
[마무리]
이 코딩 테스트를 보길 정말 잘했다고 생각한다. 결과로 봤을 때는 정말 망했지만, 나의 문제점과 내가 어떻게 공부를 해나가야 할지에 대한 성찰의 시간을 준 것 같다. 나에겐 이런 전환점이 필요했다. 매일 시간제 한없이 그냥 풀 때까지 나른하게 풀고, 긴장감 없이 그냥 풀고... 이러한 문제점들을 찾게 해 줘서 오히려 좋았다. 큰 좌절감이 있지만, 또한 큰 자극이 된 것 같아 기분이 오묘하다.. 더 열심히 해서 주어진 시간 안에 후회 없이 내 실력을 보여줄 수 있을 때까지 열심히 공부하고 연습해야겠다.
'코딩 테스트 > 코테 문제 리뷰' 카테고리의 다른 글
삼성 SW 역량 테스트 : 구슬 탈출 2 (백준 13460번) (0) | 2021.08.15 |
---|---|
삼성 SW 역량 테스트 : 새로운 게임 2 (백준 17837번) (0) | 2021.08.15 |
문자열 압축 (2020 카카오 신입 개발자 코딩테스트 문제) (0) | 2021.08.13 |
‘나 잡아 봐라’ 게임 (LINE 인턴 채용 코딩테스트 문제) (0) | 2021.08.13 |
최소 공급 찾기 (0) | 2021.08.11 |