본문 바로가기

D.evelop [CS]/Algorithm35

[알고리즘 이론] 정렬 Sort - 2-4. 비교 기반 알고리즘 (셸 정렬) 정렬 Sort1. 기본 개념2. 비교 기반 알고리즘   1) 선택 정렬   2) 버블 정렬   3) 삽입 정렬   4) 셸 정렬💡예시에 대한 가정- 입력 크기 n- 입력 배열 A[0…. n-1]- 입력 데이터 : 양의 정수- 정렬 방식 : 오름차순 (1, 2, 3, 4,…) 2-3) 셸 정렬 (Shell sort)삽입 정렬의 단점인 “올바른 삽입 위치에서 멀어도 한자리씩 비교하며 이동” 해야하는 과정을 보완멀리 떨어진 데이터와 비교, 교환하여 한번에 이동할 수 있는 거리를 늘림 → 처리 속도 향상삽입 정렬처리해야할 데이터에서 가까운 값과 비교 → 점점 멀리셸 정렬처리해야할 데이터에서 멀리 떨어진 값과 비교 → 점점 가까이입력 배열을 부분배열로 나누어 삽입 정렬을 수행하는 과정을 부분배열의 크기와 개수를.. 2024. 5. 13.
[알고리즘 이론] 정렬 Sort - 2-3. 비교 기반 알고리즘 (삽입 정렬) 정렬 Sort1. 기본 개념2. 비교 기반 알고리즘   1) 선택 정렬   2) 버블 정렬   3) 삽입 정렬   4) 셸 정렬💡예시에 대한 가정- 입력 크기 n- 입력 배열 A[0…. n-1]- 입력 데이터 : 양의 정수- 정렬 방식 : 오름차순 (1, 2, 3, 4,…) 2-3) 삽입 정렬 (Insertion sort)주어진 데이터를 하나씩 뽑은 후, 이미 나열된 데이터들이 항상 정렬된 상태를 갖도록 바른 위치를 찾아 뽑은 데이터를 삽입해서 나열하는 방식 정렬 부분 A[0…k-1] 과 미정렬 부분 A[k…n-1] 으로 구분해서 처리정렬 과정미정렬 부분 A[k…n-1]에서 1번째 데이터를 뽑아정렬 부분 A[0…k-1]에서 올바른 자리에 삽입입력 데이터 A [10, 30, 40, 20, 70, 50, .. 2024. 4. 24.
[알고리즘 이론] 정렬 Sort - 2-2 비교 기반 알고리즘 (버블 정렬) 정렬 Sort1. 기본 개념2. 비교 기반 알고리즘   1) 선택 정렬   2) 버블 정렬   3) 삽입 정렬   4) 셸 정렬💡예시에 대한 가정- 입력 크기 n- 입력 배열 A[0…. n-1]- 입력 데이터 : 양의 정수- 정렬 방식 : 오름차순 (1, 2, 3, 4,…) 2-2) 버블 정렬 (Bubble sort)모든 인접한 두 데이터를 차례로 비교 후,왼쪽 데이터가 더 큰 경우 오른쪽 데이터와 자리를 바꾸는 방식을 반복정렬 과정 : 비교 진행 방향 →, ← 에 따라 비교비교 진행 방향에 따라 정렬 과정이 달라짐 • 왼 → 오 : 큰 값 부터 찾아 오른쪽 끝 부터 위치 (오른쪽 끝부터 정렬)…. • 왼 ← 오: 가장 작은 값부터 찾아 왼쪽 끝부터 위치 (왼쪽 끝부터 정렬) 가장 작은 왼쪽 → 오른쪽.. 2024. 4. 22.
[알고리즘 이론] 정렬 Sort - 2-1. 비교 기반 알고리즘 (선택 정렬) 정렬 Sort1. 기본 개념2. 비교 기반 알고리즘   1) 선택 정렬   2) 버블 정렬   3) 삽입 정렬   4) 셸 정렬💡예시에 대한 가정- 입력 크기 n- 입력 배열 A[0…. n-1]- 입력 데이터 : 양의 정수- 정렬 방식 : 오름차순 (1, 2, 3, 4,…) 2-1) 선택 정렬 (Selection sort)입력 배열에서 가장 작은 값부터 순서대로 선택해서 나열하는 방식정렬 과정📍배열 A = [60, 90, 30, 10] (0단계) 1. 미정렬 부분에서 최솟값을 찾음 = 10 A = [60, 90, 30, 10] 2. 이 최솟값과 미정렬 부분의 첫 번째 데이터[60] 비교 10 과 60 비교 : 10 은 60보다 작다. (조건 만족) A = [60, 90, 30, 10] 3. 조건.. 2024. 4. 18.
[알고리즘 이론] 정렬 Sort - 1. 기본 개념 정렬 Sort1. 기본 개념 2. 비교 기반 알고리즘    1) 선택 정렬    2) 버블 정렬   3) 삽입 정렬   4) 셸 정렬 1. 기본 개념1) “정렬(Sort)”이란?주어진 데이터를 값의 크기 순서에 따라 재배치 하는 것대표 : 오름차순(Ascending), 내림차순(Descending) 2) 정렬 구분기준 : 정렬이 수행되는 시점에 데이터가 어디에 저장되어 있는가?✅ 내부 정렬컴퓨터 내에 있는 주기억 장치에 데이터가 있음 전체 데이터 위치 : 주기억장치에 저장 → 정렬 수행외부 정렬주기억 장치 밖에 데이터가 있음(주기억장치에 모든 데이터를 저장 할 수 없는 경우) 전체 데이터 위치 : 보조 기억장치 → 필요한 일부 데이터만 반복적으로 주기억장치로 옮겨 → 정렬 수행  3) 내부 정렬의 정렬 .. 2024. 4. 18.
[Algorithm 030] JS - 자연수 뒤집어 배열로 만들기 (Level 01) 문제 출처 : 프로그래머스 prorammers - 자연수를 뒤집어 배열로 만들기 (링크) 문제 설명 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한사항 n은 10,000,000,000이하인 자연수입니다. A. 내가 푼 답 function solution(n) { var answer = []; do{ answer.push(n % 10); n = Math.floor(n / 10); }while(n > 0) return answer; } 자료형의 변화를 최소화하여 푸는 방식 do...while과 %(나머지 연산자)를 사용 전에 풀었던 하샤드 수 구하기, 정수 내림차순으로 배치하기와 비슷한 로직이라 금방 풀 수 있.. 2021. 12. 2.
[Algorithm 029] JS - 정수 내림차순으로 배치하기 (Level 01) 문제 출처 : 프로그래머스 prorammers - 정수 내림차순으로 배치하기 (링크) 문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한사항 n은 1이상 8000000000 이하인 자연수입니다. 처음 접근 법 숫자값에 변화를 주지 않고 사용해보려 생각했다. 하샤드 수 문제와 비슷하게 10으로 나눈 나머지 값으로 각 자릿 수를 때어내 접근 할 수 있을 것이라 생각했다. function solution(n) { var answer = n; var arr = [] do{ arr.push(answer % 10); } while(answer > 0) ret.. 2021. 11. 22.
[Algorithm 028] JS - 최대공약수와 최소공배수 (Level 01) 문제 출처 : 프로그래머스 prorammers - 평균 구하기 (링크) 문제 설명 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 제한사항 두 수는 1이상 1000000이하의 자연수입니다. 일단 초등수학교육을 까마득히 잊고 지내서, 최대공약수와 최소공배수가 뭔지 기억이 안납니다...🥲 공약수가..뭐? 서로소?? 이렇게 정리하니 한결 보기편해졌다. 최대공약수 : 두 수를 완벽히 나누어 떨어지게 (나머지가 0이게)할 수 있는 제일 큰 수 36 / 12.. 2021. 11. 16.