요구사항을 효과적으로 구현하는 방법에 대해 생각합니다.
자신만의 소스 코드를 관리하는 습관을 들이면 매우 좋으니
자주 사용하는 코드를 라이브러리화 하는 것을 권유한다고 합니다.
알고리즘의 성능의 척도를 의미합니다.
복잡도가 낮을 수록 좋은 알고리즘이라고 할 수 있습니다.
'가장 빠르게 증가하는 항'만을 고려하는 표기법을 의미합니다.
-> '함수의 상한'만을 나타냅니다.
예시) 3N³ + 2N² + ...
빅오 표기법은 차수가 가장 큰항만 남김 -> O(N³)으로 표현
# N은 데이터의 개수
array = [1,2,3,4,5]
# O(N) 모든 데이터를 하나씩 연산
for i in array:
# O(N²) 내부적으로 다른 함수 호출시 그 복잡도까지 고려
for j in arrays:
temp = i * j
코드를 작성하기 전 가장 먼저 확인해야 하는 내용은
'요구사항'(또는 제한사항)입니다.
요구에 따라 적절한 알고리즘을 설계하기 위해 필요한 것은 '감'입니다.
'감'은 많은 문제들을 만나보면서 발전시켜나가야 합니다.
일반적인 알고리즘 문제 해결 과정은 다음과 같습니다.
문제를 온전히 이해하고, 어떤 식으로 코드를 작성할지 정리하고나서
핵심 아이디어를 캐치하는 것이 가장 중요한 것 같습니다.
스스로 창의적인 아이디어로 구현 가능하다는 확신이 들면서 실수를 줄이고 빠르게 성장할 수 있도록 도와준다고 합니다.
요구사항 구현하기 요약
1. 꼼.꼼.히 읽는다. 정.말.로 꼼.꼼.히.
2. 코드 작성 계획을 정리한다.
3. 확신이 생기면 시도한다.