[TIL] - 컴퓨터 사고 익히기

김주형·2022년 11월 25일
0

TIL

목록 보기
26/37
post-thumbnail

🙇🏻‍♂️Reference


목표

요구사항을 효과적으로 구현하는 방법에 대해 생각합니다.


팀 노트

자신만의 소스 코드를 관리하는 습관을 들이면 매우 좋으니
자주 사용하는 코드를 라이브러리화 하는 것을 권유한다고 합니다.

복잡도

알고리즘의 성능의 척도를 의미합니다.
복잡도가 낮을 수록 좋은 알고리즘이라고 할 수 있습니다.

  • 시간 복잡도 : 수행 시간 분석
  • 공간 복잡도 : 메모리 사용량 분석

빅오 표기법

'가장 빠르게 증가하는 항'만을 고려하는 표기법을 의미합니다.
-> '함수의 상한'만을 나타냅니다.

예시) 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. 요구사항을 꼼꼼히 읽는다.
  • 컴퓨터 사고를 적용한다.
  • 문제를 잘게 분해한다.
  1. 요구사항을 분석한다.
  • '어느정도 성능으로 동작해야 할까?'를 고민한다.
  1. 문제 해결을 위한 핵심 아이디어를 찾는다.
  • 아이디어를 적용하여 실제 코드를 작성한다.

문제를 온전히 이해하고, 어떤 식으로 코드를 작성할지 정리하고나서
핵심 아이디어를 캐치하는 것이 가장 중요한 것 같습니다.

스스로 창의적인 아이디어로 구현 가능하다는 확신이 들면서 실수를 줄이고 빠르게 성장할 수 있도록 도와준다고 합니다.


요구사항 구현하기 요약
1. 꼼.꼼.히 읽는다. 정.말.로 꼼.꼼.히.
2. 코드 작성 계획을 정리한다.
3. 확신이 생기면 시도한다.

profile
왔을때보다좋은곳으로

0개의 댓글