기타/후기

2022 네이버 신입 채용: Track 공채 코딩테스트 후기

VSFe 2022. 7. 2. 12:04

네이버 신입 공개채용 코딩테스트가 07/02 10:00 - 12:00에 진행되었다.

 

주말에 아침 일찍 일어나는건 힘들다... (야행성..)

스스로 푼 풀이라 실제 정답과 다를 수 있다는 것에 유의...

 

Q1
사용된 알고리즘: 단순 구현
예상 난이도 (Solved.ac 기준): S5

정말 단순한 구현이라 코멘트는 패스.

Q2
사용된 알고리즘: 구현 + map + 정렬
예상 난이도 (Solved.ac 기준): S1 - G5

처리할게 많지만 이것도 구현.맨날 코테 풀 때 다양한 언어로 푸는걸 좋아해서 이 문제는 파이썬으로 풀었는데,각 알파벳끼리 비교하는 과정이 조금 까다로웠다.

그래서 이쁘게 짜는거 포기하고 걍 1 ~ 26번째 랭크를 하나의 문자열로 때려박고 (다 같으면 아이템의 이름으로 오름차순이니 저 문자열 뒤에 아이템의 이름까지 박았다. 그러니까 'A B C D A A A A A A A A A A A A A A .... HELLO' 이런 식으로.) 그냥 기본 기준 정렬 때려서 해결.

 

원래는 정렬 기준을 새로 정의해서 하는 것 같은데 귀찮아...

 

Q3

사용된 알고리즘: (빡) 구현

예상 난이도 (Solved.ac 기준): G4

 

단순 그래프를 생각할 수 있지만, 세로 열 기준으로 어떤 위치에 있냐에 따라 x 좌표의 이동 방향이 굉장히 이상해지기 때문에 골때리는 문제.

다행히 직선으로만 이동할 수 있으니 6개의 방향으로 이동할 수 있는데, 세로로만 이동하는 경우 x좌표를 신경 쓸 필요가 없다.

그러니까 4방향에 대해 모든 경우를 체크해야 하는데, 4개를 다 짜려면 귀찮으니 무조건 위방향으로 이동하도록 (즉, 3시와 5시) 좌표를 적절히 swap 해준다.

 

그러고 나면, y좌표 값에 따라 x좌표가 이동하는 방법이 달라진다는 것을 알 수 있다. (0 -> 1 -> 0 -> 1 -> 0, 1 -> 0 -> 1 -> 0 -> 1)

그러면 적당히 처리하면 끝.

 

물론 마지막 외곽 체크할 때도 단순 dx, dy를 사용할 수가 없으니, dx 배열을 두개 만들어서 좌표에 따라 체크해주자 아이고...

난이도와 별개로 IDE 사용 불가인 네이버의 특성상 미쳐버릴 수도 있는 문제였다 ㅋㅋㅋ;;;

 

 

Q4

사용된 알고리즘: 비트마스크, 브루트포스

예상 난이도 (Solved.ac 기준): G3

 

20개니까, 2^20은 널널하다. 비트마스크를 쓰자.

단순히 수익률 높은거에서 다 가져가는 방식을 사용하면 망한다.

([400, 800, 50], [400, 400, 49], [1, 1000, 1]) 인데 현재 돈이 1000이라고 해보자. 그리디로 하면 망한다.

 

따라서 비트마스크로 접근해서 플래그가 켜진 상품에 대해 최소만 쫙 쓸어주고, 돈이 남으면 큰거부터 역순으로 최대를 꽉꽉 채우는 방식으로 접근해야 한다.

 

<총평>

솔직히 문제가 다른 코테에 비해 미친듯이 어렵다 이건 아니지만, ide 사용 불가 + 구현 많음이라 좀 번거로웠다.

심지어 뭐 하나 테스트하려고 제출 -> 코드 초기화 했는데, 제출한 코드를 볼 수 있지만 복붙이 안 되었기 때문에 (!) 그냥 코드를 한 번 통으로 날렸다 ㅠㅠ

 

<추가>

유입이 많아서 씁니다.

최합했습니다.

후기는 https://vsfe.tistory.com/58 여기 올려 놓았습니다!