❆ 문제 시 삭제하겠습니다.
개요
대충 이렇게 풀어봤다..
네이버 2024 코딩테스트 전형
3.18 까지 서류를 작성해서 제출한 이후 3.22 에 코딩테스트를 보게 되었다.
총 3문제를 2시간동안 풀어야 하고, 따로 해설이나 기출문제는 제공해주지 않는다.
❆ 제가 풀이한 내용을 바탕으로 정리하였습니다. 풀이가 정해가 아닐 수 있습니다.
❆ 자세한 문제 지문은 생략하였습니다.
1번 문제 - 자료구조 + 누적합
우선 누적합으로 각 식물의 상황들을 전체적으로 구현해볼 생각이었으나 누적합 2차원 배열을 만들 경우 시간초과 문제로 택도 없었다.
따라서 자료구조를 사용했다. {식물 num: 해당 식물에게 물을 주는 날짜들} 예를 들면 {1:[1, 3, 6, 19]} 로 식물에게 물을 주는 날짜들을 딕셔너리 형태로 저장해둔 후 해당 배열 속 차이들이 그 식물이 기분 나빠지는 연속 일수 보다 커지면 기분 나빠지는 식물을 그 날에 -1 시키고 break한다.
최종적으로 날짜별로 아직 기분이 좋은(?) 식물들을 구할 때는 처음 상태부터 일수별로 누적합 형태로 갱신시켰다.
2번 문제 - 투포인터
N=50만이므로 O(NlogN) 안에 해결해야 한다. 정렬이 강력했고, 예제를 활용해 파악해보면 결론적으로는 연속된 것들이 후보가 된다.
투포인터로 가능한 영역의 최대치를 갱신해가면서 해결할 수 있다.
3번 문제 - 그리디
내 등수가 주어진 조건을 만족할 수 있도록 위에 있는 애들을 밑으로 끌어내리는(?) 문제이다. 결국 내 위에 있는 애들부터 차례대로 점수가 가장 낮은 애들에게 점수를 배치시키는 그리디 구현 방법으로 해결할 수 있다.
만약 내 위에 있는 애들을 끌어내리는 도중에 밑에 나보다 점수가 낮은 애들이 더이상 없으면 -1(불가능)을 출력한다.
꿀팁
네이버 코딩테스트의 경우 정답 여부를 알 수 없기 때문에 정확히 푸는 데에 집중해야 한다. 이 때 시간초과가 날 수 있는지 확인하며 구현하자. 예를 들어,
N=1,000이고 배열은 1~100,000사이의 N이하의 크기라고 주어지면,
테스트로 N=1,000 그리고 배열을 [100,000 for _ in range(N)]-> 이렇게 가장 극단적인 값을 넣어서 테스트해서 확인해보는 것도 좋다.
확실히 카카오보다는 쉬운 느낌이긴 하다. 서류 비중이 높다기에 서류를 애초에 착실하게 작성해야 할 것 같다.!!
결과 (업뎃_)
하지만 아쉽게도 서류 전형에 탈락하고 말았다... 핑계지만 소마 준비 + 쉬어가는 타이밍 이슈 로 자기소개서에 열의를 다하지 못했는데 그 탓이 큰 것 같고, 핏이 안 맞았던 이슈도 있는 것 같다.
하지만 장기적으로 봤을 때 의미있는 실패라고 생각하고, 앞으론 전형에 대해 좀 더 진지하게 알아보고 철저하게 준비하는 태도를 길러야겠다고 반성하는 계기가 되었다.
'알고리즘 > 코딩테스트' 카테고리의 다른 글
[PS | programmers] 과제 진행하기 (0) | 2023.08.16 |
---|---|
[PS] 프로그래머스 - 뒤에 있는 큰 수 찾기 (0) | 2023.02.24 |
카카오인턴 코딩테스트 2022 05 07 후기 (0) | 2022.05.21 |