: 함수내부에서 외부에 있는 변수를 쓸 때 사용.
a = 3
def sum():
global a
b = 9
return a + b
print(sum())
: 데이터를 순서대로 나열하는 방법
: 첫번째-두번째, 두번째-세번째, 세번째-네번째 ... 이런식으로 비교하여 교환하며 정렬하는 방식
[3, 8, 2] # 정렬되지 않은 배열
1) [3, 8, 2]
3와 8을 비교!
순서가 3 < 8 이 맞다면 그대로 두기!
2) [3, 8, 2]
8과 2를 비교!
8 > 2 이므로 둘을 교환!
=> [3, 2, 8]
3) [3, 2, 8]
3과 2를 비교합니다!
3 > 2 이니까 둘을 교환!
=> [2, 3, 8] 정렬 끝!
: 선택해서 정렬하는 방식
[ 8, 6, 1, 3 ]
1) [ 8, 6, 1, 3 ]
8과 6, 1, 3을 차례차례 비교하여,
그 중 가장 작은 1과 맨 앞 자리인 8을 교체!
=> [1, 6, 8, 3]
2) [1, 6, 8, 3]
6과 8, 3을 차례차례 비교
-> 그 중 가장 작은 3과 두번째 앞 자리인 6을 교체
=> [1, 3, 8, 6]
3) [1, 3, 8, 6]
8과 6을 비교
-> 6 < 8이므로 세번째 앞 자리인 8을 교체
=> [1, 3, 6, 8]
: 하나씩 올바른 위치에 삽입하는 방식. 필요할 때만 위치를 변경하므로 효율적인 방식이다.
[5, 2, 7, 3]
1 ) [ 5, 2, 7, 3]
5를 기준점으로 2를 넣었다는 가정하에 비교하기 시작한다.
2가 들어왔을때, 5와 비교해서
5 > 2 이므로 2와 자리를 교환하게 된다.
=> [2, 5, 7, 3]
2 ) [2, 5, 7, 3]
다음으로 7이 들어왔을 때, 2,5와 비교하게 되는데
5 > 7, 2 > 7이므로 그대로 둔다.
=> [2, 5, 7, 3]
3 ) [2, 5, 7, 3]
3이 들어왔다고 할 때, 앞의 2,5,7과 비교하는데,
7 > 3이므로 [2, 5, 3, 7] 이 되고,
5 > 3이므로 [2, 3, 5, 7] 가 된다.
2 < 3이니까 그대로 둔다.
=> [2, 3, 5, 7] 정렬 끝!
: 배열의 앞부분과 뒷부분으로 나누어 각각 정렬하여 병합하는 작업을 반복하는 알고리즘이다.
A : [1,2,4,7] #정렬된 배열 A
B : [3,5,6,8] #정렬된 배열 B
C : [] #A와 B를 합칠 배열 C
1 ) A : [1,2,4,7]
B : [3,5,6,8]
1과 3을 비교하여 1 < 3이므로 1이 C에 들어간다.
C : [1]
2 ) A : [1,2,4,7]
B : [3,5,6,8]
2와 3을 비교하여 2 < 3이므로 2가 C에 들어간다.
C : [1,2]
3 ) A : [1,2,4,7]
B : [3,5,6,8]
4와 3을 비교하여 4 > 3이므로 3이 C에 들어간다.
C : [1,2,3]
3 ) A : [1,2,4,7]
B : [3,5,6,8]
4와 5를 비교하여 4 < 5이므로 4가 C에 들어간다.
C : [1,2,3,4]
4 ) A : [1,2,4,7]
B : [3,5,6,8]
7과 5를 비교하여 7 > 5이므로 5가 C에 들어간다.
C : [1,2,3,4,5]
5 ) A : [1,2,4,7]
B : [3,5,6,8]
7과 6을 비교하여 7 > 6이므로 6이 C에 들어간다.
C : [1,2,3,4,5,6]
6 ) A : [1,2,4,7]
B : [3,5,6,8]
7과 8을 비교하여 7 < 8이므로 7이 C에 들어간다.
C : [1,2,3,4,5,6,7]
7) 아직 C에 못들어간 8을 C에 추가해주면
C : [1,2,3,4,5,6,7,8]
: 문제를 작은 2개의 문제로 분리하고 각각 해결한 뒤, 결과를 모아 원래의 문제를 해결하는 전략.
[7,3,4,6,5,2,1,8]라는 배열이 있을 때,
반으로 나누면 [7,3,4,6][5,2,1,8],
다시 반으로 나누면 [7,3][4,6][5,2][1,8],
다시 반으로 나누면 [7][3][4][6][5][2][1][8]이 된다.
이때, 이 배열을 2개씩 병합하면
[7][3] => [3,7]
[4][6] => [4,6]
[5][2] => [2,5]
[1][8] => [1,8]
다시 병합하면
[3,7][4,6] => [3,4,6,7]
[2,5][1,8] => [1,2,5,8]
다시 병합하면
[3,4,6,7][1,2,5,8] => [1,2,3,4,5,6,7,8]이 된다.
이렇게 문제를 쪼개서 전체를 해결하는 것이 분할정복!
일주일동안 알고리즘 공부로 걱정이 많았는데, 오늘은 해소가 되었던 하루였다. 매니저님의 공감과 격려가 많은 힘이 되었던 하루..🥺 우선순위를 잘 생각해서 공부하고, 알고리즘을 급하게 이해하려고 하지 말아야겠다..! 일단은 개념이해만 ! 🔥
개념정리 굿!
천천히 화이팅입니다! 진심으로 응원해요!