Skip to content

week01_문수빈 #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions week01/week01_문수빈.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# week01_문수빈

---

## 2장 - 복잡도와 빅오 표기법

- 복잡도는 배우는 이유

구현하려는 알고리즘이 실행되는 대략적인 시간을 알 수 있음

- 빅오 표기법

알고리즘 A의 계산 시간 T(N)이 대략 P(N)에 비례하면 T(N) = O(P(N))이라 표현하고, 알고리즘 A의 복잡도는 O(P(N)이다.

- 연산 횟수: 3N+2 ⇒ N이 무한대로 갈 때 대략 N에 비례함
- 복잡도를 구하는 예
- 짝수 나열: for문 반복 횟수 N/2 ⇒ O(N) *계수 무시*
- 최근접 점쌍 문제: O(N^2)
- 복잡도 사용법
- $O(logN)$ 알고리즘은 N이 아무리 늘어나도 계산 횟수는 거의 늘어나지 않는다.
- 지수 시간이 걸리는 알고리즘: $O(N!)$, $O(2^N)$

지수시간이 걸리는 알고리즘은 N이 증가함에 따라 계산시간이 급격히 늘어남

- 다항시간이 걸리는 알고리즘: d > 0이 존재하고 복잡도가 $N^d$ 상수배로 상한이 제한되는 알고리즘
- $O(NlogN), O(N\sqrt{N})$ 같은 복잡도는 모두 $N^2$ 라는 상한이 정해지기 때문에 다항 시간이 걸리는 알고리즘이다.
- 최악 시간 복잡도와 평균 시간 복잡도
- 대부분 복잡도는 최악 시간 복잡도를 의미함

## 3장 - 설계 기법(1): 전체 탐색

- 전체 탐색(1): 선형 탐색법
- 요소를 하나하나 순서대로 조사하는 탐색법
- 응용
- 조건을 만족하는 지 판정 뿐만 아니라 위치를 알고 싶을 때도 사용함
- 최솟값 구하기
- 전체 탐색(2): 쌍 전체 탐색
- 주어진 데이터 안에서 최적의 쌍을 탐색하는 문제
- 주어진 두 쌍의 데이터에서 각각의 요소를 추출하는 방법을 최적화하는 문제
- 이중 for문을 사용하여 풀 수 있음.

ex) 쌍의 합이 K 이상인 값 중에서 최소인 값

- 전체 탐색(3): 조합 전체 탐색
- 모든 조합을 조사하는 방식
- N개의 데이터가 있으면 부분 집합 $2^N$개를 탐색할 수 있음

ex) 부분합 문제를 비트 표현식으로 풀기


---

## 코딩완전분석 199p 문제

**6.1 무거운 알약**

알약이 들어있는 병 20개를 각각 1개부터 20개까지 꺼내어 무게를 잰다.

측정된 무게에서 첫번째 소수점 자리 개수만큼 꺼낸 병이 무거운 알약이 들어있는 병이다.

ex) 측정된 무게가 xx.5 ⇒ 5개를 꺼낸 병이 무거운 알약이 들어있는 병

측정된 무게가 xx.18 ⇒ 18개를 꺼낸 병이 무거운 알약이 들어있는 병

**6.2 농구**

게임 1번에서 슛이 들어갈 확률: p

게임 2번에서 슛이 들어갈 확률: (슛을 넣는 순서의 경우의 수 x 3번 중 2번 슛을 넣는 경우의 수 x 3번 중 1번 슛을 못 넣는 경우의 수) + 3번 모두 슛을 넣을 확률 = $_3C_2$ x $p^2$ x $(1-p)$ + $p^3$

1번 게임에서 슛이 들어갈 확률이 2번 게임에서 슛이 들어갈 확률(i)보다 크다면 1번 게임을, 반대의 상황(ii)이라면 2번 게임을 선택한다.

i) $p$ > $_3C_2$ x $p^2$ x $(1-p)$+ $p^3$

→ $(2p-1)(p-1) > 0$

p는 확률이므로 1보다 작다.

→ 2p -1 < 0

따라서, p < 0.5 일 때 게임 1을 선택하고, 0.5 < p 일 때 게임 2번을 선택한다.