본문 바로가기
취업/코딩테스트

2022 그렙 개발자 채용 챌린지 코테 후기

by 넬준 2022. 5. 15.

총 6문제가 출제됐다. 알고리즘 4문제, SQL 2문제

 

먼저 SQL문제는 두 문제다 쉬운 편이었다.

첫 번째 SQL문제는 서브쿼리를 써서 원하는 평균값을 구하고 해당 값을 WHERE절에 넣어 원하는 답을 얻었다.

두 번째 SQL문제는 어떤 한 열의 값에 따른 순위를 매겨야 했다. MySQL에 여러 Rank function이 있는데 그 중 같은 값에 대해서 같은 순위를 주고, 다음 순위에 대해 바로 다음 숫자가 나오는 (2위가 2명이라면 다음 사람은 4위가 아닌 3위) DENSE_RANK() OVER() 함수를 사용했다. 

 

첫 번째 알고리즘 문제는 규칙을 금방 찾아서 20분 정도 걸려 풀었다.

전광판의 시작과 끝에 해당하는 포인터를 양 쪽에 두었다. 그리고 처음 주어진 문자열은 앞에 전광판 길이만큼 빈 칸을 붙여주는 후처리해주었다.

그리고 나서, 해당하는 시간만큼 두 포인터를 이동하게 하고, 최종적으로 두 포인터를 포함한 사이의 문자열을 출력해주었다. 중간에 띄어쓰기를 "_"로 바꿔줘야 하고, 포인터가 이동할 때마다 %계산을 해줘야 했다.

 

두 번째 알고리즘 문제는 문제가  그림도 많아서 복잡해 보였지만 찬찬히 읽어보니 크게 어려운 내용이 아니어서 비슷하게 20분 정도 걸려서 풀었다.

원하는 개수의 구역을 만들기 위해 벽을 만들 때 벽끼리 붙어서는 중간 구역이 생기지 않기 때문에, 벽끼리는 최소 한 칸 이상씩 떨어져 있어야 했다. 조건의 범위도 크지 않았고, 전체 탐색이 필요할거 같아서 dfs로 접근해 최소값을 구했다. '최소 한 칸 이상씩 떨어진' 벽이라는 것을 위해 어떤 식으로 조건을 줘야 하나 처음에 고민했지만 금방 해결할 수 있었다.

 

세 번째, 네 번째 알고리즘 문제는 마무리하지 못했다. 나머지 4문제를 금방 풀어서 남은 시간 쓰면 한 문제 정도는 해결할 수 있을거라 생각했는데 끝마치지 못했다.

 

세 번째 문제는 긴 문자열 안에서 일정 길이 이상의 문자열이 일정 횟수 이상연속으로 반복되는지 찾는 문제였다. 인덱스를 하나씩 옮길 때마다 인덱스 앞 문자열에 대해서 어떻게 기준 문자열을 잡고 현재 인덱스에서 처리해야하는 지 고민했다. 왠지 비슷한 방식의 문제가 사이트들에 있을 것 같아서 한 번 찾아봐야겠다. 

 

네 번째 문제는 재귀 알고리즘에서 나오는 8퀸 문제와 비슷한 느낌의 문제였다. 사각형판이 아닌 삼각형판이고, 열 방향 처리는 필요없고, 행 방향, 양 쪽 대각선 방향 처리만 필요했다. 대각선 방향 처리가 좀 복잡했지만 규칙을 찾긴 찾았다. 하지만, 코드화 시키는 과정을 마무리하지 못하고 제출했다. 시간이 부족한 건 아니었는데, 흐름을 잘 못 생각한건지 원하는 답이 나오지 않았다.

 

네 번째 문제까지 마무리하고 제출했으면 나름 만족했을 것 같은데 그러지 못해서 약간 아쉽다. 그래도 첫 번째, 두 번째 알고리즘 문제에서 읽으면서 흐름을 대략적으로 그리고, 이를 어려움없이 빠른 시간에 코드화했다는 데에 만족해야 할 듯 싶다.

 

문제는 기본적으로 꾸준히 풀고, 다른 사람 풀이보면서 한 문제에 대해 여러 방면으로 풀이를 접근해보는 연습도 꾸준히 이어 나가야겠다. 그리고 시간복잡도도 간단하게나마 고민해보는 연습도 필요할 듯 싶다. 

 

 

 

 

댓글