-
[Sorting #2] Selection Sort
Selection Sort Problem Solving with Algorithms and Data Structures using Python 을 공부하고 정리한 내용입니다. selection sort 는 리스트 중 가장 큰 값을 골라 뒤에서 부터 채우는 형식입니다.bubble sort 와는 달리 selection sort 는 리스트를 처음부터 끝까지 볼 때 한 번 의 swap 연산만 합니다. bubble sort 는 한 값을 정렬하기 위해 n−1 번의 검사와 최대 n−1 번의 swap 연산을 했다면,selection sort 는 n−1 번의 검사와 한번의 swap 연산을 합니다. 그림으로 예시를 보겠습니다. 정렬되지 않은...
-
Jekyll 에서 LateX 사용하기
Jekyll 에서 LateX 사용하기 포스팅을 하다보면 수식을 쓸 일들이 있습니다. 방법을 몰라서 그냥 캡쳐해서 이미지로 사용했었는데, 생각보다 간단하게 적용이 가능했습니다. Typora 에서 LateX 사용하기 제가 사용하는 마크다운 편집기인 Typora 기준으로 설명하겠습니다. 파일 > 환경설정에 들어가면 Markdown 관련 탭이 있습니다. 여기서 문법 강조 지원에 있는 수식 관련 항목을 체크해 주시면 됩니다. 너무 쉽네요… 머쓱타..드.. Jekyll 에서 Latex 사용하기 위와 같은 방법으로 Typora 에서 수식을 사용했는데, 블로그에 올리니 적용이 안되었습니다. 제가 사용하는 Jekyll 기준으로 설명하면,블로그 저장소의 상위폴더...
-
[Sorting #1] Bubble Sort
Bubble Sort Problem Solving with Algorithms and Data Structures using Python 을 공부하고 정리한 내용입니다. bubble sort 는 인접한 값을 비교하고 순서를 정렬하는 방법입니다.sorting 방법 중 가장 많이 알고있는 방법인데, 성능면에서는 우수하지 않습니다.compare 와 swapping 을 불필요하게 여러 번 하기 때문입니다. 그림으로 예를 들어보겠습니다. [54, 26, 93, 17, 77, 31, 44, 55, 20] 이라는 bubble sort 방식으로 정렬할 때, 처음 비교해야 하는 쌍은 총 8 ( 9-1 ) 개 입니다. 8쌍을 비교하고 나면, 리스트 내에서...
-
알고리즘 스터디 3주차
알고리즘 스터디 3주차 백준의 단계별 풀어보기에서 정렬해보기 를 풀어보았습니다. 2750 수 정렬하기 def problem_2750(input_num): input_list = [] for i in range(int(input_num)): input_list.append(int(input())) input_list.sort() for i in range(int(input_num)): print(input_list[i]) my_num = input() problem_2750(my_num) 간단한 정렬문제인데, 파이썬에서는 더 간단하게 sort 함수를 제공하고 있습니다. 문제는 이 sort 함수의 성능인데, 파이썬의 sort 함수는 timsort 라는 알고리즘으로 구성되었다고 합니다. timsort는 worst 인 경우 시간복잡도가 O(n log(n)) 으로 상당히 빠른 알고리즘입니다. timsort에 관한 자세한 설명은 링크 를 참고하시기 바랍니다. sort 의...
-
알고리즘 스터디 2주차
알고리즘 스터디 2주차 백준의 단계별 풀어보기에서 규칙찾기를 풀어보았습니다. 1193 분수찾기 def problem_1193(input_num): # 대각선 기준으로 몇 번째 대각선에 속하는 수 인지 알기 c = 0 while input_num > 0: c = c+1 input_num = input_num - c # c = 몇 번째 대각선에 속하는지, c1 = 해당 대각선의 분수를 만들기 위해 c1 = c # l = 해당 대각선의 분수 list l = [] # 지그재그 이므로, 홀수번째 대각선과 짝수번째 대각선의 규칙이 다름 if c1...