[병합 정렬] 자료 구조를 분할하고 각각의 분할된 자료구조를 정렬한 후, 다시 병합하여 정렬한다. 병합 정렬은 정확히 반절씩 나눈다는 점에서 늘 항상 \( O(N*logN) \) 의 시간 복잡도를 가집니다. 퀵 정렬의 경우 피벗 값에 따라 편향되었을 때, 최악의 경우 \( O(N^2) \) 를 갖는다는 점에서 병합 정렬은 이보다 나은 장점을 갖는다. 하지만 그렇다고 해서 평균적으로 병합 정렬이 더 빠르다는건 아니다. 분할 단계 가로의 길이는 \(N\), 높이는 \( log_2N \) 이 됩니다. 처리하는 데이터의 갯수는 한번 쪼갤 때 마다, 2의 지수로 증가하기 때문에 N이 아니라 훨씬 적은 \( log_2N\) 만으로 처리 할 수 있게 된 것 입니다. 병합 단계 정렬하며 병합해갑니다. 이미 정렬이 되어..
🥕 [ 백준 11729 ] 하노이의 탑 이동 순서 문제 링크 url : https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 🍒 문제 분석 유명한 하노이의 탑 이동 문제 입니다. 작은 원판 위에는 큰 원판을 올릴 수 없고, 한번에 하나의 원판만을 옮길 수 있으며, 최적의 동선으로 1에서 3으로 탑을 옮겨야만 하죠. 🥑 코드 def moveDisc(cnt, from_bar, to_bar, via_bar): global anslist if ..
[재귀] 나 자신을 다시 호출하는걸 재귀라고 한다. 바로 실습으로 가보자. [실습 1] 유클리드 호제법 # 유클리드 호제 def gcd(a,b): c = a % b if c == 0 : return b return gcd(b,c) # return을 빠트려서는 안된다. a, b = map(int,input('최대 공약수를 구하고픈 두 수 ? : ').split()) print(f'{a}, {b}의 최대공약수는 {gcd(a,b)}') return gcd(b,c)에서 return을 빼먹을 경우, b의 값과 관련 없이 함수 gcd(a,b)는 None을 return하게 된다. 왜냐면 자기 자신을 불러오기 전 함수 gcd(a,b)는 무엇을 return할껀지가 안정해지기 때문. 백준 문제 풀이를 통해 재귀 알고리즘의..
헤드라인 [ 카카오, 프라이버시 자문위원회 3기 출범 ] 요약 : 카카오 (대표 남궁훈) 은 프라이버시 자문 위원회 3기를 출범하고, '카카오 알고리즘 윤리헌장'에 프라이버시 보호 조항을 추가한다고 밝혔다. 신규 조항은 알고리즘을 활용한 서비스 및 기술의 설계, 운영 등 전 과정에서 프라이버시 보호 원칙을 지키도록 노력하겠다는 내용을 담고 있다. 카카오는 ESG 경영 측면에서 이용자의 프라이버시 보호를 기업의 주된 책무로 삼고, ‘Privacy by Design’을 기반으로 서비스 전반에 프라이버시 보호를 위한 사전예방과 점검, 개인정보 영향평가 등을 도입 및 발전시켜 나가겠다는 계획이다. 본문 본문 링크 김성수 기자 (2022, 5, 11). 카카오, 프라이버시 자문위원회 3기 출범. . URL: ht..