Skip to content

Commit 8c2e8a8

Browse files
committed
fix: 이분탐색 이미지 교체 및 내용 수정
1 parent 4880f25 commit 8c2e8a8

File tree

6 files changed

+35
-35
lines changed

6 files changed

+35
-35
lines changed

_posts/algorithm/2021-10-01-Binary-Search.md

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@ tags:
1313

1414
**이분탐색**
1515

16-
이분 탐색은 정렬된 배열에서 원하는 값을 빠르게 찾아내는 방법이다.
16+
이분 탐색은 정렬된 배열에서 원하는 값이 어디에 있는지 빠르게 찾아내는 방법이다.
1717

1818
---
1919
<br>
20-
탐색의 유명한 예로 사전을 들 수가 있다. 사전의 경우, 색인이 있어서 가나다 순이라던가, 주제별로 묶여있어서 우리가 원하는 것을 색인을 통해 찾기도 한다. 하지만 이러한 색인이 없다면, 무지성으로 처음부터 끝까지 한장씩 찾아보는 수 밖에 없다.
20+
탐색의 유명한 예로 사전을 들 수가 있다. 사전의 경우, 색인이 있어서 가나다 순이라던가, 주제별로 묶여있어서 우리가 원하는 것을 색인을 통해 찾기도 한다. 하지만 이러한 색인이 없다면, 무지성으로 처음부터 끝까지 한장씩 찾아보는 수 밖에 없다. 하지만, 데이터가 정렬되어 있다면 이분탐색을 통해 어디에 있는지 빠르게 찾을 수 있다.
2121

22-
<br><br>
22+
<br>
2323

24-
만약 정렬되어있는 데이터에서 빠르게 찾는 방법으로 이분탐색이 쓰인다.<br><br>
24+
<br>
2525

2626
**문제를 푸는 핵심은 정렬 후, 우리가 원하는 값이 현재 기준(mid)보다 큰지 작은지를 확인하여, 탐색범위를 점차적으로 줄이는 원리를 이해하는 것이다.**
2727

@@ -30,63 +30,66 @@ tags:
3030

3131
<br>
3232

33-
실생활에서 이러한 이분 탐색이 쓰이는 경우는 UP and DOWN과 관련이 있다.
33+
이분 탐색을 소개할때 자주 쓰이는 것이 UP and DOWN인데, 이를 생각하면서 읽으면 좋을 것이다.
3434

3535
<br>
3636

37-
A가 자신의 기말 프로그래밍 점수를 맞춰보라고 한다. 0~100점까지 있다고 했을 때 친구 B는 이 0~100까지 수 중 하나를 불러서 맞춰야 한다. 너무 불평등한 조건이기 때문에 업 다운으로 알려준다고 했을 때 과정은 다음과 같다.
37+
주요 포인트는 범위를 left, right라는 변수로 잡고, 그 중간 값인 mid(left+right/2)를 통해 mid가 우리가 찾는 값인지 체크하는 것이다. 만약 mid가 우리가 찾는 값보다 작으면 right의 범위를 이동하여, 다음 턴에 left~mid에서 찾고, mid가 찾는 값보다 크면 left를 mid로 범위를 설정해서 다시 탐색하는 방식이다.
38+
39+
40+
<br>
41+
42+
---
3843

39-
> B : 50점 이상?
40-
>
41-
> A : ㅇㅇ
42-
>
43-
> B : 70점 이상?
44-
>
45-
> A : ㄴㄴ
4644

47-
<br><br>
4845

49-
여기까지 진행하면 A의 점수는 50~69점으로 추정할 수 있다. 이때 질문을 적게하는 방식은 해당 범위의 반에 해당하는 것을 기준으로 이상인지 이하인지, 그 값인지 확인하는 방식이다.
46+
아래와 같이 -1 ~ 19까지 정렬된 배열이 있다고 보자. 우리가 4라는 값이 어디있는지 찾으려면 이진 탐색을 이용해 다음과 같은 과정을 가진다. 우선 찾는 범위는 left, right 로 잡으며, 현재 비교할 값은 mid 로 지정한다.
5047

5148
<br>
49+
<p align="center">
50+
<img width="550" alt="binary-search-01" src="/assets/images/binary-search-01.png">
51+
</p>
5252

53-
따라서 범위 left, right에서 그 중간값인 mid(left+right/2)를 통해 mid가 우리가 찾는 값이면 그대로 출력, mid보다 작으면 right의 범위를 mid-1로 mid보다 크면 left를 mid+1로 범위를 설정해서 다시 탐색하는 방식이다.
5453

5554
<br>
56-
---
5755

58-
![Untitled](https://user-images.githubusercontent.com/47859845/135489919-91fd9a43-0c2b-4978-81a4-17b8ceb9e5f4.png)
5956

60-
위와 같이 -3~20까지 정렬된 길이 11인 배열 D가 있다고 보자. 우리가 4라는 값이 어디있는지 찾으려면 이진 탐색을 이용해 다음과 같은 과정을 가진다.
57+
`left = -1 , mid = 7, right = 19`
6158

62-
<br>
6359

64-
`left = 0 , right =10, mid = 5`
60+
여기서 우리가 찾는 4는 현재 mid 값인 7보다 작기 때문에 범위를 left와 mid로 다시 잡고 찾아야 한다.
6561

66-
5번의 값은 9로 4는 9보다 작기 때문에 0~4번 범위로 다시 탐색해야한다. 따라서 범위의 right를 mid-1 = 5로 지정해서 다시 탐색한다.
62+
63+
<p align="center">
64+
<img width="550" alt="binary-search-02" src="/assets/images/binary-search-02.png">
65+
</p><br>
6766

6867
<br>
6968

70-
`left = 0 , right = 4, mid = 2`
69+
`left = -1 , mid = 4, right = 7`
7170

72-
2번의 값은 1로 4는 1보다 크기 때문에 3~4번 범위로 다시 탐색해야한다. 따라서 범위의 left를 mid+1 = 3으로 지정해서 다시 탐색한다.
7371

74-
<br>
72+
다시 범위를 잡으면, mid의 값이 우리가 찾는 4와 동일하다. 여기까지 하면, 우리가 찾는 값이 index 2에 있는 것을 알 수 있다. 이처럼 우리가 찾는 값인지 확인하려면 배열을 처음부터 끝까지 10번 연산하여 찾을 수도 있지만, 이진 탐색을 이용하면 약 2번만에 우리가 원하는 것을 찾을 수 있다.
7573

76-
`left = 3 , right = 4, mid =3.5 → 4`로 올림(사용자 지정 올림, 내림, 반올림)
74+
75+
<br>
7776

7877

79-
4번의 값은 7로 4는 7보다 작기 때문에 3~3번 범위로 다시 탐색해야한다. 따라서 범위의 right를 mid-1 = 3로 지정해서 다시 탐색한다.
78+
만약 여기서 5를 찾는다고 하면 어떨까? 5는 현재 mid의 값인 4보다 크기 때문에 범위를 mid, right로 새로 잡는다.
8079

80+
<br>
81+
<p align="center">
82+
<img width="550" alt="binary-search-03" src="/assets/images/binary-search-03.png">
83+
</p>
8184
<br>
8285

83-
`left = 3 , right = 3, mid = 3`
86+
`left = 4 , mid = 5, right = 7`
8487

85-
3번의 값은 4로 우리가 찾는 값이다!
88+
여기서 mid 값이 우리가 찾는 값임을 확인할 수 있다.
8689

8790
<br><br>
8891

89-
이처럼 처음부터 끝까지 우리가 찾는 값인지 확인하면 10번 연산이 필요하지만, 이진 탐색을 이용하면 약 4번만에 우리가 원하는 것을 찾을 수 있다.
92+
9093

9194
<br>
9295

_posts/algorithm/2023-05-05-Combination.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
---
2-
title: "조합론(Combination)"
2+
title: 조합론(Combination)
33
date: 2023-05-05
4-
# toc: true
5-
toc_label: 'Content list'
6-
toc_sticky: true
74
categories:
85
- algorithm
96
tags:

_posts/beakjoon/2023-02-22-BOJ_11651_py.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ tags:
1818

1919
<br>
2020

21-
이렇게 작성하면 x[1](y)를 기준으로 정렬되고, 같으면 x[0](x)
21+
이렇게 작성하면 x[1]를 기준으로 정렬되고, 같으면 x[0]
2222
기준으로 정렬된다.
2323

2424
<br>

assets/images/binary-search-01.png

32.3 KB
Loading

assets/images/binary-search-02.png

32.3 KB
Loading

assets/images/binary-search-03.png

32 KB
Loading

0 commit comments

Comments
 (0)