본문 바로가기

공부/Swift, algorithm10

MacOS (Xcode)에서 #include <bits/stdc++.h> 헤더 사용하기 부제: MacOS (Xcode)에서 c++로 알고리즘 문제 풀기 #include 위 헤더는 문제를 풀 때 사용할 대부분의 헤더들을 include 해주어서 따로 더 추가해줘야 하는 번거로움을 덜어준다 ! 하지만 엑코에서 사용하려면 따로 파일을 추가해줘야 한다. (어렵지 않아요~) 1. 터미널에서 아래 경로로 들어가기 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 2. bits 폴더 추가 (안 되면 앞에 sudo 붙여주세여) mkdir bits 3. touch로 stdc++.h 파일 만들고 에디터로 아래 내용 붙여 넣고 저장 touch stdc++.h // C++ includes .. 2022. 1. 28.
퀵 정렬 지난 게시글과 이어지는 내용입니다 퀵 정렬 quick sort - 빠른 정렬 알고리즘 - 배열의 원소를 나누어 계산하는 원리 - 대표적인 분할 정복 방법 중 하나 - 특정한 값을 기준으로 큰 숫자와 작은 숫자를 나눈다. 특정한 값 = 피벗 (pivot) 보통 첫 번째 값으로 잡음 과정 피벗을 기준으로 왼쪽에서는 피벗보다 큰 숫자, 오른쪽에서는 피벗보다 작은 숫자를 고른다. 자리를 바꿔준다. 계속 수행한다. 엇갈리는 상황이 온다면? → 왼쪽에 있는 값(작은 값)과 피벗을 바꾸어준다. 엇갈린다 == 작은 값의 index가 큰 값의 index보다 큰 상황 피벗이 정렬되면 다시 왼쪽 / 오른쪽 집합으로 나누어 정렬을 수행한다. - 즉 퀵 정렬은 분할한 뒤에 더하면 전체적으로 봤을 때 연산 횟수가 훨씬 줄어드는 .. 2021. 8. 26.
버블정렬, 선택정렬, 삽입정렬 정렬 문제는 알고리즘의 효율성 차이를 극명하게 보여준다. 선택정렬 selection sort - 전체적으로 훑어보며 가장 작은 값을 골라 앞으로 보내는 방식 - 최솟값과 그 주소를 저장해둘 변수가 필요함 - 선택의 범위가 앞에서부터 점점 줄어듦 (= 왼쪽 끝부터 고정됨) 버블정렬 bubble sort - 바로 옆 값과 비교해 자리를 바꿔주는 방식 - 선택의 범위가 뒤에서부터 점점 줄어듦 (= 한 바퀴 돌고 나면 가장 큰 값이 오른쪽 끝에 가 있음 ➜ 오른쪽 끝부터 고정됨) - 한바퀴 == 패스스루 passthrough - 가장 쉽지만, 그만큼 오래 걸리기 때문에 효율성이 떨어짐 삽입정렬 insertion sort - 각 숫자를 적절한 위치에 삽입하는 방식 - 앞의 원소들이 '이미 정렬되어 있다'고 가정 .. 2021. 8. 24.