네이버 파이낸셜이라는 회사에서 주관한 코딩테스트다. 금융기업이라 그런지 채용 절차도 겁나 길다. 혹시 모르는 마음에 프로그래머스에서 접수해 응시하였다. 테스트 케이스만 보면 일단 올솔인데 히든까지 고려하면 3솔이지 싶다.

1번은 hash자료구조를 잘 사용해야 한다. 전체 유저 정보를 담는 hash구조와 주어진 input의 각 요소마다 유효한 지 체크하는 hash구조 2개로 해결할 수 있다.

2번은 달팽이 알고리즘 문제이다. spiral traverse에 대한 경험이 없으면 아마 풀기 힘들지 않을까. 그나마 검색 가능이라 어지 해결되는 문제였지 그게 아니라면 무조건 네이버 코테 기준 3-4번에 랭크되어야 한다 생각한다. 전체 빈칸의 개수를 total로 잡고 0이 될 때까지 조건에 따라 달팽이 순회를 반복하여 0이 되는 순간의 좌표를 리턴하면 된다.

3번은 유저 정보를 담는 hash구조를 사용하여 주어진 input값에 대한 최종 hash구조를 완성한 뒤 각 유저끼리 후보자에 선정이 되는지 완전탐색으로 검증하면 된다. python이라 쉬웠지 java 등 언어제약이 걸린다면 꽤나 데이터를 처리하느라 골머리를 썩혔겠다.

4번은 bfs던 완전탐색이던 다익스트라처럼 해결할 수 있다. 부호 반전 키워드가 있으므로 점수가 음수더라도 0노드를 만나 반전될 수 있으므로 방문배열의 초기값은 -INF로 설정해야 한다. 그리고 갈 수 있는 방향이 오른쪽, 아래쪽밖에 없으므로 왼쪽, 위쪽을 생각하여 회귀(or 사이클)가 형성되는 문제는 고려할 필요없다. 따라서, 모든 경우의 수에 대해 탐색하면 되겠다. 필자는 bfs처럼 초기 좌표와 점수를 큐에 넣고 탐색하였다. 다만, 좀 아쉬운 점은 0노드의 부호반전으로 인해 계속 최저로 가더라도 결국 0으로 반전하면 최댓값이기에 노드의 중간버퍼를 [최대, 최소] = [-INF, INF]로 초기화하여 탐색했으면 완벽하지 않았나 싶다.

난이도는 파이썬 기준으로 브론즈 상위, 실버 상위, 실버 중간, 골드 하위 정도로 보인다. 과제는 자바-노드 언어제한이 걸린 걸 봐서는 프레임워크 기능구현 관련 과제가 아닐까 생각한다. 카카오를 제외하면 코테는 어느정도 무난하게 해결이 되는 듯 싶다. 다만 코테는 개발자의 서류전형이나 다름이 없어 면접과 포트폴리오 준비가 많이 필요해보인다.

결과 : 1차 코딩테스트 통과했고 2차 과제테스트 진행 예정입니다. java, node.js 언어 고정으로 보아 프레임워크 경험을 물어볼 듯 하네요... 얼른 스프링 공부를 하던가 해야지...

+ Recent posts