2023 상반기 하나은행 디지털 코딩테스트 후기
지난 2월 19일 하나은행 디지털 직무 코딩테스트를 보았습니다. 지원 할 때부터 보내주는 문자가 굉장히 따뜻한 느낌이어서 더 가고싶은 생각이 들었습니다. 물론 코딩테스트는 따뜻하지는 않았습니다.
문제
문제는 총 5문제로 알고리즘 4문제와 SQL 1문제로 구성되었고 시간은 2시간이 주어졌습니다.
1번 문제는 구현 문제였습니다. 문자열들을 입력으로 받고 문제의 조건에 맞는 문자열의 개수를 출력하는 문제였습니다. 빠르게 풀고 다음 문제로 넘어갔습니다.
2번 문제는 그리디 문제였다고 생각합니다. 어떤 배열이 주어지고, 그 배열을 조작해 홀수 번째 숫자는 x보다 크고 짝수 번째 숫자는 x보다 작게 만드는 x의 개수를 물어보는 문제였습니다. 저는 배열을 정렬하고 중간값들의 차이를 구해서 출력해주었습니다. 두 부분으로 나눌 때 항상 크기가 같거나 1만 차이날 것이기 때문에 [1 ||||||| 4, 5] 에서 1과 4 사이의 정수를 구해주었습니다. 배열의 개수가 짝수일 경우, 즉 정렬된 배열이 [4, 4 ||||||| 4, 4]일 경우 0을 출력하는 식입니다.
3번 문제도 그리디 문제였다고 생각합니다. x일마다 월급을 받는데, 월급날이 휴가 중이면 그 전날에 월급을 지급하는 방식에서 월급을 받는 날 월급의 최댓값을 구하는 문제였습니다. 저는 겹치는 휴가 기간에서 x의 배수를 구해주는 방식으로 풀었습니다. 겹치는 휴가는 이전 휴가의 끝과 다음 휴가의 시작이 정확히 1 차이나면 겹침, 아니면 겹치지 않게 판단했습니다. 잘 풀었던 것 같지만 시험이 끝나고 천천히 다시 생각해 보았을 때 예외처리를 해주지 않았다는 것이 생각나서 한숨이 나왔습니다.
4번 문제는 이분탐색 문제였다고 생각합니다. 테스트케이스도 못 통과했고 풀이가 무엇인지 더 생각해 봐야 할 것 같습니다.
5번 문제는 간단한 SQL 문제였습니다. group by와 having, distinct를 사용해서 풀었습니다.
후기
생각보다 어려웠습니다. 또 시험 후 풀었다고 생각한 문제에서 예외 케이스가 떠올라서 분하기도 합니다. 아니나 다를까 유튜브에서 코딩테스트 팁 동영상이 뜨더니 절대 테스트케이스만 맞추고 제출하지 마라는 내용이 있더라구요. 앞으로의 코딩테스트에서는 다양한 경우를 항상 생각해야겠다고 다짐했습니다.