본문 바로가기
반응형

알고리즘6

[BOJ 15649] N과M(1) (C++) www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 구현 방법 N과M(1)은 백트래킹을 연습할 수 있는 N과 M시리즈 중 첫 번째 문제입니다. 1부터 N까지 자연수 중, 중복 없이 M개를 고른 수열을 출력해야합니다. 이를 위해 1부터 N까지 탐색하는데, 만약 현재 탐색하는 숫자가 이전에 사용됐으면 스킵하고, 사용하지 않았으면 answer배열에 추가시켜줍니다. 탐색을 하다가, 출력할 개수인 m번 진행되면, answer배열에 들어있는 m개의 원소를 모두 출력해주고.. 2021. 5. 11.
[알고리즘] 병합 정렬 (Merge Sort) 알고리즘 병합 정렬(Merge Sort)의 알고리즘은 다음과 같습니다. [일단 반으로 나누고, 나중에 병합해 준다] 정렬할 배열을 모두 크기가 1인 개별 배열인 상태로 시작합니다. 크기가 1이었던 배열들을 크기가 2인 배열로 묶으면서 정렬을 수행합니다. 모두 합칠 때까지 반복합니다. 예를 들어 다음 배열을 정렬해보겠습니다. [4 , 6 , 8 , 1 , 3 , 5 , 7 , 2 ] 1) 정렬할 배열은 모두 크기가 1인 개별 배열인 상태로 시작합니다. [ 4 ] [ 6 ] [ 8 ] [ 1 ] [ 3 ] [ 5 ] [ 7 ] [ 2 ] 2) 배열을 합치면서 정렬을 수행합니다. [ 4 , 6 ] [ 1 , 8 ] [ 3 , 5 ] [ 2 , 7 ] ↓ [ 1 , 4 , 6 , 8 ] [ 2 , 3 , 5 ,.. 2021. 2. 14.
[알고리즘] 퀵 정렬 (Quick Sort) 알고리즘 퀵 정렬(Quick Sort)의 알고리즘은 다음과 같습니다. 정렬의 기준 값인 피봇(Pivot) 값을 설정합니다. 피봇 값보다 큰 숫자를 왼쪽부터 찾고, 피봇 값보다 작은 숫자를 오른쪽부터 찾습니다. 만약 작은 숫자의 index가 큰 숫자의 index보다 작으면 엇갈린 상황으로, 왼쪽의 작은 값과 피봇 값의 위치를 바꿔줍니다. 큰 숫자와 작은 숫자의 위치를 바꿔줍니다. 이를 배열이 정렬될 때까지 반복합니다. 이렇게 보면 처음에는 무슨 말인지 이해하기 어렵습니다. 예를 들어 다음 배열을 정렬해보며 쉽게 이해해 봅시다. [4 , 6 , 8 , 1 , 3 , 5 , 7 , 2 , 10 , 9] 1-1) 피봇 값을 선택합니다. 보통 첫 번째 원소를 피봇 값으로 설정합니다. 피봇 값 = 4 피봇 값인 4.. 2021. 2. 14.
[알고리즘] 삽입 정렬 (Insertion Sort) 알고리즘 삽입 정렬(Insertion Sort)의 알고리즘은 다음과 같습니다. 두 번째 원소부터 시작해 해당 원소가 이전 원소들과 비교해 어디에 삽입할지 결정 이를 마지막 원소까지 반복합니다 예를 들어 다음 배열을 정렬해 보겠습니다. [4 , 6 , 8 , 1 , 3 , 5 , 7 , 2 , 10 , 9] 1) 두 번째 원소인 6을 이전 원소들인 4와 비교해 어디에 삽입할지 결정합니다. 6은 4보다 크니 두 번째 상자에 삽입합니다. □ 4 □ ◀ 6을 어디에 삽입? [6 삽입] ↓ □ 4 ■ [4 , 6 , 8 , 1 , 3 , 5 , 7 , 2 , 10 , 9] 2) 세 번째 원소인 8을 이전 원소들인 4, 6과 비교해 어디에 삽입할지 결정합니다. 8은 6보다 크니 세 번째 상자에 삽입합니다. □ 4 .. 2021. 2. 13.
[알고리즘] 버블 정렬 (Bubble Sort) 알고리즘 버블 정렬(Bubble Sort)의 알고리즘은 다음과 같습니다. 첫 번째 원소부터 마지막 원소까지 바로 옆에 있는 원소와 비교해 작은 값을 앞으로 옮겨줍니다. 첫 번째 원소부터 마지막 이전 원소까지 바로 옆에 있는 원소와 비교해 작은 값을 앞으로 옮겨줍니다. 정렬될 때까지 이를 반복 예를 들어 다음 배열을 정렬해 보겠습니다. [4 , 6 , 8 , 1 , 3 , 5 , 7 , 2 , 10 , 9] 1-1) 4 와 6 비교해 4 7이니 8과 7 위치 변경 [4 , 6 , 1 , 3 , 5 , 2 , 8 , 7 , 9 , 10] [4 , 6 , 1 , 3 , 5 , 2 , 7 , 8 , 9 , 10] 2-8) 8 과 9 비교해 8 array[j + 1]) { temp = array[j]; array.. 2021. 1. 31.
[알고리즘] 선택 정렬 (Selection Sort) 알고리즘 선택 정렬(Selection Sort)의 알고리즘은 다음과 같습니다. 전체를 탐색해 최솟값을 찾아 첫 번째 원소로 저장 첫 번째 원소를 제외하고 나머지를 탐색해 최솟값을 두 번째 원소로 저장 전체를 탐색할 때까지 이를 반복 예를 들어 다음 배열을 정렬해 보겠습니다. [4 , 6 , 8 , 1 , 3 , 5 , 7 , 2 , 10 , 9] 1) 전체를 탐색해 최솟값인 "1"을 찾아내고, 제일 앞의 원소와 바꿔 줍니다 [4 , 6 , 8 , 1 , 3 , 5 , 7 , 2 , 10 , 9] [1 , 6 , 8 , 4 , 3 , 5 , 7 , 2 , 10 , 9] 2) 1을 제외한 나머지를 탐색해 최솟값인 "2"을 찾아내고 1을 제외하고 제일 앞의 원소와 바꿔 줍니다. [1 , 6 , 8 , 4 , .. 2021. 1. 31.
반응형