호아's Diary

1. CS스터디 -> IP 와 API

IP(Internet Protocol) : 네트워크에 연결된 기기의 주소다.

IP 주소는 네트워크에서 기기들이 어떻게 통신하는지에 대한 규칙과 포맷을 규정한 것임.

간단히 말하지만 컴퓨터 간의 통신을 가능하게 한다.

 

API(Application Programming Interface) : 컴퓨터나 컴퓨터 프로그램 간의 연결이다.

소프트웨어 인터페이스의 한 종류로서 다른 소프트웨어 조각(pieces)에게 서비스를 제공

application 간 주고 받는 interface이다. 소프트웨어 간 주고 받는 창구

 

Interface : 컴퓨터의 정보교환체계의 2개 이상의 컴포넌트의 공유된 경계.

"서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고 받는 경우의 접점이나 경계

 

UI(User Interface) : 사용자와 기계 간의 정보로는 주고 받는 접점/경계

 

참고링크 :

1. https://fusiondeveloper.tistory.com/38

2. https://junhostudylog.notion.site/API-5796d45986ae434e9ea704c9b983f3f6

2. 알고리즘 원격강의 개념정리

1. 시간복잡도 : 입력값과 문제를 해결하는 데 걸리는 시간과의 상관관계를 말합니다! 입력값이 2배로 늘어났을 때 문제를 해결하는 데 걸리는 시간은 몇 배로 늘어나는지를 보는 것
2. 공간 복잡도 판단하기 : 입력값과 문제를 해결하는 데 걸리는 공간과의 상관관계를 말합니다! 입력값이 2배로 늘어났을 때 문제를 해결하는 데 걸리는 공간은 몇 배로 늘어나는지를 보는 것

3. 점근 표기법 : 알고리즘의 성능을 수학적으로 표기하는 방법입니다. 알고리즘의 “효율성”을 평가하는 방법입니다.
점근 표기법(asymptotic notation)은 어떤 함수의 증가 양상을 다른 함수와의 비교로 표현하는 수론과 해석학의 방법
 * 점근 표기법의 종류
빅오(Big-O)표기법, 빅 오메가(Big-Ω) 표기법
빅오 표기법은 최악의 성능이 나올 때 어느 정도의 연산량이 걸릴것인지,
빅오메가 표기법은 최선의 성능이 나올 때 어느 정도의 연산량이 걸릴것인지에 대해 표기

4. ord() 함수 : 특정한 한 문자를 아스키 코드 값으로 변환해 주는 함수

5. chr() 함수 : 아스키 코드 값을 문자로 변환해 주는 함수

6. Array : 특정원소 조회 O(1), 중간에 삽입 삭제 O(N), 데이터 추가 : 데이터 추가 시 모든 공간이 다 차버렸다면 새로운 메모리 공간을 할당받아야 한다, 정리 : 데이터에 접근하는 경우가 빈번하다면 Array를 사용하자

7. LinkedList : 특정원소 조회 O(N), 중간에 삽입 삭제 O(1), 데이터 추가 : 모든 공간이 다 찼어도 맨 뒤의 노드만 동적으로 추가하면 된다., 정리 : 삽입과 삭제가 빈번하다면 LinkedList를 사용하는 것이 더 좋다

노드는 아래 두 가지 정보가 필요합니다.  1) 칸에 있는 데이터 2) 다음 칸이 뭔지

8. Python 의 list 는 array 로 구현되어 있다. 내부적으로 동적 배열이라는 걸 사용해서, 배열의 길이가 늘어나도 O(1) 의 시간 복잡도가 걸리도록 설계했습니다!파이썬의 배열은 링크드 리스트로 쓸 수도 있고, 배열로도 쓸 수 있게 만든 효율적인 자료구조다!

9. 클래스 : 클래스는 분류. 집합. 같은 속성과 기능을 가진 객체를 총칭하는 개념
10. 객체 : 객체는 세상에 존재하는 유일무이한 사물
11. 클래스에는 생성자(Constructor)라는 게 있는데 객체를 생성할 때 데이터를 넣어주거나, 내부적으로 원하는 행동을 실행하게 할 수 있다. 파이썬에서 생성자 함수의 이름은 __init__ 으로 고정
무조건 생성자 이름의 함수는 __init__ 입니다! ,self ? self 는 객체 자기 자신을 가리키는것
클래스 내부의 함수는 메소드(method) 라고 부른다. ex) talk 라는 메소드를 만들어 보면, 각 객체의 변수를 사용해서 메소드를 구현

12. 순차탐색 : 말그대로 앞에서 부터 순차적으로 하나하나 탐색해 나가는 것입니다. 찾고자 하는 값이 앞쪽에 있다면 짧은 시간에 찾아낼 수 있지만 뒤쪽에 있다면 오래 걸리게 된다.

13. 이진탐색 : 탐색할 때 마다 탐색 범위가 반으로 줄어들기 때문, 이진탐색을 하기위해선 탐색 리스트가 정렬되어 있다는 전제가 있어야 한다. 10억개의 데이터 리스트를 순차탐색으로 탐색할 때 평군 5억번의 비교를 해야되지만 이진탐색으로 탐색할 경우 최대 33번의 비교로 값을 찾아낼수있습니다. 이 수치만 보더라도 이진탐색이 매우 효율적이라는 것을 알수있다.

14. 재귀 : 어떠한 것을 정의할 때 자기 자신을 참조하는 것, 재귀 함수는 바로 자기 자신을 호출하는 함수

15. 문자열 슬라이싱: 파이썬에서 문자열 자르는 방법은 되게 간단하고, 다양하다, slice 는 자르다라는 의미가 있다.
예를 들어서, "가나다라마바사" 라는 문자열에서 "가나다라마" 까지 자르고 싶으면 어떻게 해야 할까요?  문자열[시작인덱스:끝인덱스] 로 표기하면 된다.

16. // 연산자를 이용하면 소수점 이하의 수를 모두 버리고 몫만 나타낼 수 있다.

17. 팩토리얼 : 팩토리얼은 1부터 어떤 양의 정수 n까지의 정수를 모두 곱한 것을 의미

예를 들면
3! 은 3 * 2 * 1 = 6,
4! 는 4 * 3 * 2 * 1 = 4 * 3! = 24

 

Factorial(n) = n * Factorial(n - 1)
Factorial(n - 1) = (n - 1) * Factorial(n - 2) 

....
Factorial(1) = 1

 

3. 알고리즘 기초 다지기

알고리즘 기초다지기를 시작했다. 단계별로 매일 도전 하려 한다!

오늘 느낀 점

  • 알고리즘 습관화 하자!!
  • CS스터디 조금씩 지식 쌓기
  • 효율적인 공부방법 , 공부계획 찾기

내일 할 일

  • 원격강의
  • TIL (Today I learned) 작성하기
  • 체크인, 체크아웃 하기

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading