Talking

[수다/주저리] 첫 코딩 테스트

3/5(토) 삼성 SW 마에스트로 1차 코딩테스트 생애 첫 공식 코테를 쳤다.

 

이 글은 작성자 Mapin의 일기와 같은 느낌으로 작성해볼까 한다. 이번 코테로 느낀점을 잊지 않기 위해서 기록을 하려고한다. 자기 객관화를 하기 위해서 쓴 글이다.

 

삼성 SW 코테를 치기 전

 

FACT

  • 매일 백준을 1~3문제씩 꾸준히 풀었다.
  • 난이도는 브론즈~ 골드의 다양한 난이도
  • Algorithm Camp를 2개월 동안 수료했다.
  • 다양한 개념들을 접했고, 다양한 문제들을 풀었다.

문제를 많이 풀게되면 , 자연스럽게 내 머리 속에 꾸준히 흔적이 남을거라 생각을 했다. 

 

삼성 SW 코테를 치고난 후

 

Trouble Shooting

  • 코딩테스트에서 어려운 개념을 묻기보다는 , 이미 우리가 잘 알고있는 개념들을 어떻게 효율적으로 구현할 수 있는가를 보는거 같다.
  • 물론, 어려운 개념을 이해할 수 있는가에 대한 문제도 있지만, 6문제가 있었다면, 그런 문제는 1문제 정도밖에 없었다.

코딩 테스트를 하고 난뒤에 , 머리를 맞은듯한 느낌이 들어서, 본인의 문제점에 대해서 한번 고찰을 해봤다.

 

시간제한 때문에, 완전탐색으로 안된다는건 알고 있지만, 그것을 어떻게 해결할지에 대한 고민을 하지 않았다.

  • 생각보다, 완전탐색이 안되는 이유에 대해서는 빠르게 알아낼 수 있었다.
  • 하지만, TL 문제를 해결하는 과정을 내 것으로 만들어야 했는데, 충분한 연습이 되어있지 않았던거 같다.
  • 한 단계를 더 나아가야 하는 시점이 온 것 같다.

기본적인 알고리즘 개념들

  • 기본적인 자료구조,알고리즘들에 대한 생각의 재료가 부족한것 같다.
  • 결국, 문제는 다양한 생각의 재료를 조합해서 푸는 문제인데, 기본적인 알고리즘들에 대해서 정리를 한번 해야할 것 같다. 
  • 그리고, 유명한 알고리즘에 대해서는 확실한 이해를 하고 있어야 한다.  (BFS,DFS,Djikstra...등)

 

알고리즘은 문제를 해결 + Optimize(최적화) 이다. 어떻게든 문제를 해결하는 능력도 보지만, 이미 해결된 문제를 어떻게 더 효율적으로 풀 수 있을까에 대한 고민도 해야한다.

 

예를들어, 조합을 구현하는 방법에도 엄청 많은데, 직관적으로 N^3으로 구현하는 방법이 있을것이다. 하지만, 이것을 효율적으로 구현한다면 어떻게 할 수 있을까과 같이 , 알고리즘의 기본적인 정수(essence)을 전혀 고려하지 않은, 어느새 문제만 풀고 있었던 것이다.

 

알고리즘은 문제해결 & 최적화 2마리의 토끼를 모두 잡아야한다는걸 이번 코테를 통해서 뼈저리게 깨달았다.

(사실 코테 책 1개만 봐도 서론에 나올것 같은 내용이지만, 피부에 와닿아서 주저리주저리 적어보았다)

 

앞으로 문제 풀이의 글이 길어질 것 같다.