2 분 소요

넥토리얼 코테 후기

작년? 재작년? 즈음에도 본 코딩테스트 였지만
최근에 다시 볼 기회가 생겨 도전하게 되었다

문제 유형만

구체적인 설명을 하지는 않겠지만
기억에 남는 유형들을 가볍게 정리하려 한다
‘분할정복 + 수학’,
‘구현 / 시뮬레이션’
‘그래프 / MST / 크루스칼? 프림?’
‘문자열 / 이분 탐색’
‘자료구조 / set,map / LFU?’
‘수학? 정렬?’

개인적인 생각

일단… 쉬운 문제가 없었던것 같다
그나마 ‘구현?’ 쪽이 아이디어를 빨리 잡아서
비교적 빠르게 풀 수 있었다

3문제 정도는 풀었지만
사실 내가 위쪽에서 ? 처둔 녀석들은
통과하지 못하고 열심히 시도해본 흔적이기에…
(특히 마지막 문제는 감이 잘 안왔던것 같다
첫번째 문제처럼 분할정복으로 푸는게 맞았을까…
이제 와서 생각한다)

그리고 개인적으로
마지막 10분 정도에 당황했던것이 큰것 같았다

아쉬웠던 점

  • unordred_map<int,Struct>를 사용하고,
    set를 통해 데이터 정렬
    이후, struct에 < 연산자를 통해 비교하는데
    대체 왜 unordred_map에 find가 정상적으로 작동하지 않았을까...
    (이제 와서 생각해보면 뭔가 오타가 섞여있었을지도 모르겠다)

  • 그래프 같은 경우는 MST를 사용하는 것이라 생각하여
    크루스칼을 사용해보았지만 너무 느린듯하였다
    사실 prim 알고리즘이 맞았을까?
    아니면 내가 최적화를 잘 못한것인지…

  • 해커랭크 쪽 환경을 몇번 겪어보았지만
    역시 IDE를 사용할 수 없는 것은 굉장히 불편한 환경이다
    물론 자체적인 Intelisense 같은 것이 있어
    자동완성 + include 해주는 것은 익숙해지니 좋았지만
    짠 코드의 ‘디버깅’이 불가하기에 cout로 출력하며 문제가 된 상황을 추측해야 했다
    (아니면 그냥 문제를 다시 읽어보거나 공책에 가능한 경우의 수를 적어보던가 했다)

전략?

사실 이전에 넥토리얼을 본 기억이 있기에
나름대로 전략을 잡고 들어간 것이 있었다

  • 4시간에 6문제이므로
    1문제당 40분을 잡자

  • 문제당 40분이므로
    처음 10분은 ‘문제 정독 + 어떻게 풀지의 접근’
    그 다음 10~20 분은 구현
    마지막 10분 정도 디버깅

  • 다만 처음 10분 보고 모르겠으면 넘어가기
    또는 40분이 지난것 같으면 다음 문제로

개인적으로는 어느정도 효과가 있었던것 같다

바로 코드를 보지 않고
문제를 정독하면서 풀이 방법을 생각하니
이후 ‘구현’할때 그래도 ‘방향’을 생각하며 짤 수 있었다

그리고 중간에 ‘잘못’ 생각하거나 짠 부분이 있을 때도
미리 생각해둔 내용이 있어 수정하기 비교적 편했던것 같다

다만, 40분이 지나고 넘어간 후
다른 문제를 풀다 다시 오니
해당 문제에 대한 ‘집중력’이 떨어진 것은 어쩔 수 없는 부분인 듯 하다

또 그 외로는
시험 중, 커피나 음료수를 마셔서 집중력을 유지하려고 했다

다만 마지막 1시간 즈음에는 집중력이 크게 떨어졌다
(간식 이나 음료수 좀 더 사둘걸…)

후기

아쉽지만 후회는 없는 것 같다
그래도 작년이나 재작년에는
문제 ‘유형’을 파악하지 못한게 상당히 많았고

시간 분배를 잘 하지 못하여
뒤 쪽의 1~2 문제를 사실상 놓쳤었다

그래도 이번에는
전반적인 ‘문제 유형’은 파악할 수 있었고
내가 ‘부족’한 부분을 비교적 잘 알게 되었다

  • 그래프 / MST / 크루스칼 or 프림
  • 수학이나 기하 (+ 분할정복 응용?)
  • 주어진 조건에 맞는 커스텀 자료구조 제작

(너흰 나중에 두고 보자)

2문제? 풀던 작년에 비해서는
절반은 맞았고, 코드도 제대로 짜보기는 했다
개인적인 ‘성장’을 느낄 수 있는
좋은 도전이었다고 생각하였다

댓글남기기