[TIL] 1월 12일

yeon·2021년 1월 12일
0
post-custom-banner

학습한 내용

알고리즘

  • 알고리즘이란
    • 어떤 목적을 달성하기 위해 거치는 일련의 과정들
    • 시간복잡도가 가장 낮은 알고리즘을 선택한다.
  • 알고리즘의 조건
    • 입력과 출력 : 0개이상의 input과 1개 이상의 output이 있어야한다.
    • 명확성 : 각 단계의 명령이 명확해야한다.
    • 유한성 : 유한시간내에 종료되어야한다.
    • 효율성 : 명백하게 실행가능(검증 가능)한 것이어야 한다.

복잡도

  • 알고리즘의 성능을 나타내는 척도
  • 시간 복잡도 : 연산의 횟수
  • 공간 복잡도 : 메모리의 양

점근적 표기법과 시간 복잡도

아래 블로그 참고

[학교-알고리즘] 점근적 표기법과 시간 복잡도

  • 점근적 표기법
    • 해당 알고리즘이 주어진 데이터의 크기를 기준으로 수행시간 혹은 사용공간이 얼마나 되는지 객관적으로 나타낼수 있는 표기법
    • 빅오, 오메가, 세타
  • Big O
    • 점근적 상한선 의미
    • 새로운 알고리즘이 아무리 나빠도 기존 비교하는 함수와 같거나 좋다는 뜻
  • Big 오메가
    • 점근적 하한선
    • 새로운 알고리즘이 아무리 빨라도 기존 비교하는 함수와 같거나 좋지 않다는 뜻
    • 빅오의 반대
  • Big 세타
    • 점근적 상한과 하한의 교집합
    • 새로 만든 알고리즘이 아무리 나쁘거나 좋더라도 기존 함수의 범위 안에 존재한다는 뜻
  • Big O가 최악의 경우라는 뜻..?
    • big O가 최악의 경우이며 시간 복잡도를 나타낼때 많이 사용함
    • 왜 최악의 경우를 사용할까
    • 내 알고리즘은 아무리 느려도 70점은 할 수 있어 라는 느낌
    • 알고리즘은 하드웨어에 영향을 많이 받아서 절대적 시간으로 평가 할 수 없어서 big O를 사용한다.

Queue

큐 (자료 구조)

  • queue는 선입선출 자료구조이다.(First Come First Out)
  • put(insert), get(delete)를 이용하여 구현된다.
  • front(head)와 rear(tail)은 데이터의 위치를 가르킨다.
    • front : 데이터를 get할 수 있는 위치
    • rear : 데이터를 put할 수 있는 위치
  • 오버플로우(Overflow) : 큐가 꽉 차서 더이상 put 할 수 없는 경우
  • 언더플로우(Underflow) : 큐가 비어있어 get 할 수 없는 경우

Deque (덱, Double-ended queue)

[자료구조] 스택(Stack), 큐(Queue), 덱(Deque)

  • 스택과 큐의 특성을 모두 갖는 자료구조
  • front 와 end 양쪽에서 삭제와 삽입이 모두 가능하다.
  • 하지만 중간에서 삽입과 삭제가 어렵다.
  • 탐색을 거의 하지 않고, 앞 뒤에서 삽입, 삭제가 자주 일어나는 경우에 사용한다.

오늘 한 일

  • 알고리즘의 조건, 복잡도
  • 점근적 표기법에 대해 완벽히 이해는 못했지만 학습한 부분까지만 짚고 넘어가자. 나중에 필요할 때 더 학습하는 걸로
  • 그룹 코드 리뷰시간에 내 코드를 설명하다가 막혔는데 원인이 단순히 돌아가는 코드를 짜서 발생한 것 같다. 단 하루만에 내가 짠 코드가 이해가 안 간 것이다. 코드를 작성하고 바로 코드에 대한 설명을 노션에 정리해서 왜 이렇게 구현했는지 내 자신이 알 수 있도록 하는 시간을 갖자.
  • 오전에 피로함이 몰려와서 점심시간에 호수공원 한바퀴 돌고 왔다. 집으로 돌아오는 길에 눈이 펑펑 쏟아졌다.. 체력이 부족한게 확 느껴져서 운동 좀 할 걸 반성했다.
  • 왜 크롬에서 구글검색 안되는거지.. 사이트는 잘 동작하는데

Todo

  • 자료구조 학습하기(알고리즘보다 중요하고, 현업에서 필요한 지식)
  • 자바의 정석 진도 나가기(자바 실력을 높여야 더 퀄리티 높은 미션 제출이 가능할 듯)
  • 윤성우님의 자료구조 책
  • 그림으로 이해하는 알고리즘 책 이번주 안에 다 읽기
  • 호수공원 달리기랑 주말 등산하기

Reminder

  • 코드 짤 때 내가 왜 이렇게 구현했는지 잊어버리지 않게 바로 코드 설명하는 페이지 노션에 만들기
post-custom-banner

4개의 댓글

comment-user-thumbnail
2021년 1월 12일

하루만에 내가 짠 코드가 이해가 안가는 거 저도 공감해요. 바로 코드를 어떤 방식으로 짰는지 정리하는 게 확실히 좋은 거 같습니다.

1개의 답글
comment-user-thumbnail
2021년 1월 12일

계에에에에에속 앉아서 머리쓰면서 공부하는 게 보통 쉬운 일이 아닌거 같아요 ㅋㅋㅋ 재택근무 하시는 분들의 이야기를 들어보니까 아침에는 출근하는 느낌을 내려고 밖에 한번 둘러보다 들어오고 점심에는 공원에 산책하러간다하더라구요. 주말 등산 저도 생각하고 있었는데..조심히 다녀오세요! ㅎㅎ

1개의 답글