내가 어떠한 문제를 해결해야 할 상황을 맞닥드렸을 때
아무 가이드라인도 없이 문제를 풀려고 하면 심히 당황할 것이다.
이럴 경우를 대비한 문제 해결의 가이드라인이다.
문제 해결 접근법
- 문제를 이해하라
- 몇가지 간단한 예제를 만들어라.
- 문제를 분할하고 어떻게 풀 지 고민해라.
- 문제를 풀어라. 풀리지 않는다면 간단하게 만들어라.
- 복습하고 리팩토링해라
문제를 이해하라
- 문제를 내 방식대로 다시 생각할 수 있는가?
- 실제 문제가 어떤 것인지 내 스스로 질문을 던지고 이해해라.
- 문제의 인풋은 무엇이고 아웃풋은 무엇인지?
간단한 예제를 만들어라
- 문제를 이해했다면 인풋과 아웃풋을 예상할 수 있을 것이다.
- 간단한 예제를 만들어본 뒤, 복잡한 예제를 만들어보아라.
- 유효한 인풋부터 아무것도 입력하지 않은 인풋, 유효하지 않은 인풋 등에 대해 예제를 만들어보아라.
문제를 분할하고, 어떻게 풀 지 고민해라
- 예제를 만들었다면 인풋을 통해 아웃풋을 어떻게 낼 지 대략적으로 견적이 잡힐 것이다.
- 그럼 내부 코드를 분할하고, 의사코드를 작성해라. 어떻게 풀어나갈지 개략적으로 풀어라.
- 문제를 분할하면서 어떻게 문제점이 또 보일 것이다.
문제를 해결하라. 해결되지 않는다면 간단히 만들어라
- 문제가 해결된다면 해결해라.
- 너무 어렵다면, 어려운 부분은 일단 킵해두고 쉬운 부분부터 푼다.
- 쉬운 부분을 풀어나간 뒤, 어려운 부분은 추후에 풀어라.
복습하고 리팩토링해라
- 코드를 잘 했던 못 했던 일단 무조건 복습해라.
- 한줄 한줄 읽어나가며 어떤걸 잘 했고 못 했는지 생각해라.
- 가능하다면 리팩토링을 통해 기능을 유지하면서 어떻게 깔끔하게 할 것인지 사고해라.
'알고리즘, 자료구조' 카테고리의 다른 글
(문제 해결 패턴) 빈도수 찾기 패턴 (0) | 2022.10.31 |
---|---|
cReduce (0) | 2022.09.10 |
배열(Arrays)의 BIgO 성능 (0) | 2022.08.04 |
객체(Object)의 BigO 성능 (0) | 2022.08.04 |
빅오 표기법(Big O notation) (0) | 2022.08.02 |