기록물 저장소/활동

[SW 마에스트로 12기] 1차 코딩 테스트 후기

모영이 2021. 4. 2. 17:31

문제가 될 시 삭제하겠습니다. 그리고 합격시 공개하겠습니다.

 

난이도를 붙였지만, 개인적인 의견이고 나대는 목적이 아니라 난이도를 공유하려고 함이고, 제가 소마 준비할때, 코딩 테스트가 어떤 난이도를 갖고있는지 아예 몰라서 이곳저곳 뒤져서 정보를 얻었기 때문에 대략적인 공부의 범위를 설계할때 도움을 받았던 것 같습니다. 설명회 때, 난이도 질문이 많이 나오기도 하고 공식적으로 난이도가 어떠어떠 하다를 답해주기 힘들기 때문에 공유하면 좋을 것 같다고 생각했습니다.

 

문제를 푸는 방법에는 여러 알고리즘을 사용할 수 있고 또 알고리즘을 사용하지 않고 애드혹 알고리즘 처럼 자신만의 참신한 방법으로 풀 수 있습니다. 정답 개수를 알려주지 않았기 때문에 제가 푼 방식이 틀렸을 수도 있기에 참고하실때 주의해주시면 될 것 같습니다.

 

1번 문제 : 위상정렬

2번 문제 : 그리디 알고리즘

3번 문제 : 투포인터

4번 문제 : 애드혹 or 반복문

5번 문제 : 애드혹 or 슬라이싱

6번 문제 : 분할정복

SQL : JOIN사용

WEB : 미디어 쿼리

 

총 8문제가 나왔다. 작년처럼 5문제가 나오는 줄 알았고, 미리 공지에 알고리즘 3, SQL 1, WEB 1이렇게 낸다고 했었다. 1차 코딩테스트 3일 전에 개인 메일로 테스트 공지가 왔고 그때 알고리즘 6문제 SQL 1, WEB 1 이렇게 나온다고 했다. 

 

개인적으로 난이도를 붙여보자면(백준 solved.ac 기준)

1번 문제 : 골드 3

2번 문제 : 실버 4

3번 문제 : 실버 3

4번 문제 : 실버 4

5번 문제 : 실버 3

6번 문제 : 실버 3

 

1번 문제는 기본적인 위상정렬 문제였다. 백준에서 위상정렬 문제는 골드 4정도부터 시작되는데, 이 문제는 골드3과 골드 2 사이 난이도의 문제였다. 참고로 나는 1번을 못풀었는데, 이 문제가 위상정렬인걸 몰랐다. 그리고 위상정렬 문제를 하나도 안풀어봐서 단순 탐색을 하면 되겠거니 싶었다. 첫 문제를 못풀고 넘어가서 찜찜할 수 밖에 없었지만, 다음 문제는 꼭 풀어야된다 하면서 넘어갔다. 하지만 위상정렬 문제를 풀어봤고, 공식을 알고있다면 쉽게 풀리는 문제다.

 

2번 문제는 단순하면서 이게 맞나 싶은 그리디 알고리즘 문제였다. 실버 4~3정도의 문제였다고 생각한다. 문제는 생각보다 단순해서 이해하는데 어렵지 않았다. 복잡하게 생각하면 못푸는 그런 유형 중 하나였다. 백준에서 그리디 문제를 풀어보면 "그냥 이렇게 하면 됐었네! 아 왜 못 풀었지.."하는 문제들이 있는데 그런 문제다. 

 

3번 문제는 투포인터 문제였는데 문제를 보면 투포인터가 바로 생각날 만할 정도로 직관적이지는 않았다. 하지만 엄청 어렵지는 않았다. 투포인터까지 생각했다면 문제를 푸는건 어렵지 않은 그런 문제다. 어떤 문제에 (TIP : 투포인터 사용) 이렇게 써놓은다면 곧바로 풀 수 있는 문제라고 생각한다.

 

4번 문제는 단순 반복문이었다. 솔직히 DP를 사용할 수 있다고 생각한다. 왜냐하면 반복되는 무언가가 존재하고, 그것을 여러번 사용하기 때문에 DP로 풀면 시간복잡도를 많이 줄일 수 있었다. 하지만 단순 반복문으로 풀자고 생각했는데, 우선 주어진 범위의 값들이 많지 않았다. 그리고 제한 시간도 1분이어서 절대 시간 초과나 메모리 초과가 발생하지 않을거라는 확신이 있었다. 만약 DP였다면 실버 1이나 골드 4였을 것 같다.

 

5번 문제는 최댓값과 관련된 문제였다. 생각보다 어려울 수 있었다고 생각한다. 차근차근 풀면 쉽게 풀리는 문제였다. 방금 이말은 정말 무책임할 수 있었다는 걸 인정한다. 차근차근 풀면 쉽게 풀린다. 그치만, 이 문제는 순서대로 생각하면 잘 풀린다는 뜻이었다. 뭐부터 해야할지 정하고 그것을 실행하면 되는 문제였다.

 

6번 문제는 분할정복 문제였다. 백준에는 4분할로 쪼개는 문제의 난이도가 실버 3(색종이 만들기)으로 되어있다. 그것보다는 쉬웠지만, 같은 내용을 공유한다고 생각해서 난이도는 크게 달라지지 않는다고 생각한다. 4분할로 쪼개면서 무언가를 복잡하게 생각하는 문제가 실버 1(쿼드트리)로 되어있지만 그정도는 아니었다. 실버 4와 실버 3사이의 분할정복 문제였다.

 

SQL은 그냥 WHERE절 정도 나올 줄 알았는데, JOIN이 나왔다. 어렵지 않았는데 마지막에 ORDER BY 조건을 빠뜨릴뻔 했다.

 

WEB은 공부를 하려고 했는데, 생활코딩 영상 몇 번 본 것만으로는 해결을 못했다. 못 풀었기 때문에 뭐라고 할 말이 없다. 나름 선택과 집중을 했다고 생각한다. 5문제 기준, 알고리즘 2문제, SQL은 꼭 맞추자가 목표였다. 하지만 웹 문제를 냄으로써 웹 공부를 조금이라도 했으니깐 소마의 의도가 통했다고 생각한다. 그리고 웹은 꾸준히 공부할거다.