본문 바로가기
일기

알고리즘 문제를 푸는 마음가짐

by 기초백과 2021. 2. 9.

1. 문제를 풀기전에 고민하는 시간, 구현하는 시간, 테스트 하는 시간을 1:1:1 비율로 한다.

(되도록이면 고민하는 시간을 길게)

 

2. 고민하는 부분은 많지만 간략하게 다음과 같다.

① 어떠한 자료구조를 쓸지

(배열, 연결리스트, 어레이리스트) / (스택, 큐, 힙, 세그먼트 트리) 

 

어떤 구조로 짤지

메소드의 위치, 틀 그리고 재귀로 구현할지 반복문으로 구현할지

속도 : 재귀 < 반복문

재귀는 자신이 할 일만하고 슥 넘기는 것이기 때문에 구현의 스케일이 큰 경우에

논리를 헷갈리지 않고 구현할 수 있다.

 

③ 어떠한 기술로 구현해야 할지

브루트포스, DFS, BFS, 백트래킹, 시뮬레이션, DP, 그리디

 

④ 이렇게 구현하였을때 시간 복잡도가 어떻게 나오는지

10,000 * 10,000 = 100,000,000(1억)

약 1억번의 연산이 1초가 걸린다.

문제에 주어지는 시간은 대개 2초로 약 2억번의 연산이 허용된다.

 

3. 테스트 케이스에 너무 의존하지 마라

테스트 케이스는 모든 경우를 보여주지 않는 경우가 많다.

테스트 케이스만을 타겟으로 하지 말고 이외의 경우를 항상 고려하자.

 

4. 실제 시험에서는 Pass/Fail/컴파일 에러/시간초과 등의 결과를 알 수 없는 경우가 많다.

이를 고려하여 고민하는 시간에서 논리에 헛점이 없는지

계속해서 고려하고 실제로 문제를 풀 때에는 한번에 Pass가 나오는 연습을 하도록 한다.

 

5. 빠르게 많은 문제를 푸는 것도 중요하지만 새로운 문제를 마주쳤을때

고민하는 연습을 통해 풀어보지 못한 문제가 나와도 대응할 수 있도록 해야한다.

'일기' 카테고리의 다른 글

머신러닝의 교과서 배송 완료!  (0) 2021.01.13