본문 바로가기
728x90

Algorithm11

[Algorithm] 안정 정렬과 불안정 정렬의 차이점 [Algorithm] 안정 정렬과 불안정 정렬의 차이점 2023.01.19 - [Algorithm] - [Swift] 프로그래머스 문자열 내 마음대로 정렬하기(lv. 1) [Swift] 프로그래머스 문자열 내 마음대로 정렬하기(lv. 1) [Swift] 프로그래머스 문자열 내 마음대로 정렬하기(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12915 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스 masterpiece-programming.tistory.com 드디어 이것에 대한 답을 어느정도 이해하고 포스팅할 시간이 왔다. 이전에 품었던 의문이었다. 이 부분은 안정 정렬과 불안정 정렬의 정의를.. 2023. 2. 12.
[Algorithm] 퀵 정렬, 병합 정렬 알고리즘(Swift 구현) [Algorithm] 퀵 정렬, 병합 정렬 알고리즘(Swift 구현) 퀵 정렬(Quick Sort)은 많이 사용되는 알고리즘이다. 더불어 병합 정렬(Merge Sort)도 많이 쓰인다. 두 정렬 알고리즘은 삽입, 선택 정렬보다 훨씬 빠른 속도로 정렬되기 때문에 대부분의 프로그래밍 언어에서 정렬 라이브러리에서 활용되기도 한다. 현재 정렬 알고리즘의 근간이 되는 두 정렬을 이번 포스팅에서는 알아볼 것이다. 1. 퀵 정렬(Quick Sort) 1) 정의 기준 데이터를 설정하고 그 기준보다 큰 데이터와 작은 데이터의 위치를 바꾸는 정렬 방법 2) 설명 (1) 과정 설명 정의만으로는 이해하기가 어렵다. 상세히 설명을 해보겠다. 퀵 정렬은 '분할 정복' 방법으로 리스트를 정렬하는 것이다. (오름차순 기준) (1) .. 2023. 2. 11.
[Algorithm] 선택 정렬, 삽입 정렬 알고리즘(Swift 구현) [Algorithm] 선택 정렬, 삽입 정렬 알고리즘(Swift 구현) 정렬 알고리즘. 최근 Swift로 프로그래머스 알고리즘 문제를 풀어보고 있던 중, 정렬에 대한 궁금증이 도졌다. Swift의 내장함수 sorted()가 바로 Tim sort 방식으로 정렬을 한다고 하는데, 제대로 이해를 하지 못했다. 그래서 예전에 정렬 알고리즘을 얄팍하게 공부해서 한 번 포스팅 한 적이 있었지만, 이번엔 더 자세하게, 이해가 될 수 있을 정도로 알고리즘을 파헤쳐 보기로 하였다. 1. 정렬 알고리즘이 필요한 이유? 정렬(Sorting) : 데이터를 특정한 기준에 따라서 순서대로 나열하는 것 우리가 일상생활에서도 많이 사용하는 알고리즘이다. 어떤 것들을 차례대로 배치해놓아야 일의 순서가 쉬워지는 것들이 있다. 예를 들어.. 2023. 2. 7.
[Algorithm] 2. 그리디 알고리즘(Greedy) [Algorithm] 2. 그리디 알고리즘(Greedy) 1. 개념과 접근 방법 1) 개념 : 현재 상황에서 지금 당장 좋은 것만 고르는 방법이다. 2) 접근 방법 일반적으로 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요한다. 특정 문제를 만났을 때 단순히 현재 상황에서 가장 좋아 보이는 것만을 선택해도 문제를 풀 수 있는지를 파악할 수 있어야 한다. 이를 위해 정당성 분석이 가장 중요하다. 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는 지 검토하여야 한다. 다양한 아이디어를 떠올려보면서 고민을 해야 하고 창의적 발상을 통한 가정과 그 풀이 방법에 대한 검증이 필요하다. 보통 ‘최소’의 횟수, 금액, 개수 등을 요구한다. 그리디는 최적의 해를 보장할 수 없.. 2022. 4. 27.
[Algorithm] 1. 시간 복잡도, 공간 복잡도 [Algorithm] 1. 시간 복잡도, 공간 복잡도 1. 복잡도란? 더보기 알고리즘의 성능을 나타내는 척도 얼마나 복잡한지를 의미한다. 높아질 수록 좋지는 않은 것이다. 알고리즘은 컴퓨터 속에서 돌아간다. 그렇기 때문에 얼마나 더 오래 걸리느냐, 얼마나 더 큰 용량을 차지하느냐로 복잡도를 계산한다. 이를 각각 시간 복잡도, 공간 복잡도라고 한다. 시간 복잡도와 공간 복잡도는 일종의 거래 관계에 있다. 마치 역세권을 희망하면 월세가 높아지고, 월세를 낮추려면 역세권을 포기해야 하는 것처럼 메모리를 더 사용하는 대신 시간을 줄일 수도 있고 시간을 더 쓰는 대신 메모리 용량을 작게 사용할 수 있다. 이 계산은 우리가 유한한 성능을 가진 컴퓨터와 기기들을 가지고 있기 때문에, 효율적이고 더 빠르고, 더 경제적.. 2022. 4. 27.
728x90