TIL 2021.10.02 - 2주차 ✏️

이민영·2021년 10월 14일
0

📍이번주 학습 목표

  • JavaScript 기초 문법 공부하기
  • DOM과 이벤트 동작 방법 이해하기
  • 제이쿼리 사용 방법 공부하기
  • 자료구조의 개념 공부하기

    오늘 배운 내용 💪

    • 자료구조 개념 공부하기

<오늘 복습할 내용>
1. 자료구조
2. 시간 복잡도

1. 자료구조

- 알고리즘, 자료구조의 정의

  • 알고리즘이란 무엇일까?
    = 알고리즘이란 문제를 해결하는 방법을 말한다. 속도가 빠르고 메모리는 적게 사용하면서 문제를 효율적으로 해결하는 방법을 찾는 것이다.

  • 자료구조란 무엇일까?
    = 자료구조란 자료를 담는 컨테이너를 말한다.프로그래밍에서 데이터를 효율적으로 접근 및 수정하기 위해 만들어진 데이터 값의 모임, 관계 및 데이터에 적용할 수 있는 함수나 명령을 의미한다.

    효율적인 알고리즘을 찾을때에는 시간 복잡도와 공간 복잡도에 대해서 고려해야한다. 그때 시간 복잡도는 어떻게 보면 좋을까?

2. 시간 복잡도

- 시간 복잡도

  • 우리는 어떤 알고리즘이 더욱 효율적인지 보기 성능을 비교하기 위해서 여러가지 방법으로 연구가 있었지만, 결국에 우리는 연산의 횟수를 체크하는 방법으로 성능을 확인하고, 전체 연산의 횟수가 크게 영향을 주는 전체 코드에서 가장 시간이 오래 걸리는 부분을 찾아 그 부분을 표현 하는 방법으로 성능을 비교하기로 했다. 그리고 그것을 빅오 표기법으로 나타내게 된다.

  • 우리가 자료구조의 특성을 확인할 때에는, 탐색, 삽입, 삭제에 있어서 각각에 대한 시간 복잡도를 확인해야 한다.

- 빅오 표기법

빅오 표기법에 대해서 간단하게 이해해보자!
위와 같이 가장 시간이 오래 걸리는 부분을 찾아 (= 최악의 경우일때) 시간 복잡도를 나타내는 것이다.

#만일 리스트가 하나 있다고 하자.
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

#리스트 a에서 뒤에 있는 원소 하나만 뺀다고 가정하면 O(1)로 나타낸다.
a.pop()

#리스트를 for문으로 한 번 돌려 출력한다고 해보자.
#이 경우 N개의 배열을 한번 완전히 돌리게 되므로 O(N)
for item in a:
	print(item)
    
#리스트를 for문 안에 for문으로 두번 돌린다고 하면 O(N^2) =N의2제곱
#N개를 완전히 두번 돌리기 때문에.
for i in a:
	for j in a:
    	    print(i,j)




+) 잡담🙌

2주차 마지막 수업 부터 3주차 수업까지 복습하고 블로그 작성을 못했다,, 절망 😂
사실 갑작스러운 수술이 진행되는 바람에 5일이나 병원에 입원을 했고 분명 입원해서 공부 할 수 있을거라고 자신했으나 그럴 여유따위는 없었고 헤롱헤롱 퇴원하고도 회복이 느려서 밀린 수업 듣는걸로 정신이 나가버리고 그러면서 4주차 수업도 나가려니까 이제는 수업 따라가기도 힘든 지경이 되어 버렸다,,😭 아직도 완벽한 일상으로 돌아오지 못해서 컨디션 회복을 하면서 힘들겠지만 다시 열심히 열심히 따라가보려고 노력중이다,,! 💪
TIL는 매번 해볼려고 노력햇는데 다시 복습하면서 채워보자😇

profile
프론트엔드 개발자를 꿈꾸고 있습니다 !

0개의 댓글

관련 채용 정보