본문 바로가기

JS16

[프로그래머스]완전탐색_모의고사(Level 1/JS) 오늘은 완전탐색 방법으로 풀이한 문제를 적어보려고 한다. 완전탐색은 말 그대로 모든 경우의 수를 완전하게 탐색해서 정답을 찾아내는 알고리즘 방법이다. 모의고사 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까.. 2023. 7. 13.
[프로그래머스]그리디(탐욕법)_조이스틱(Level 2/JS) 오늘은 그리디 알고리즘에 대해 적어보려고 한다. 그리디 알고리즘은 탐욕법이라고도 하며 현재 선택이 나중에 미칠 영향에 대해서는 고려하지 않고 현재 상황에서 지금 당장 좋은 것을 고르는 방법을 의미한다. 프로그래머스에서 해당하는 문제로는 Level 2 조이스틱 문제를 풀이해봤다. 조이스틱 문제 설명 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동 (마지막 위치에서 오른쪽으로.. 2023. 7. 11.
[알고리즘]퀵 정렬(Quick Sort)_JS 퀵 정렬 퀵 정렬은 분할정렬과 비슷하게 배열에서 임의의 값을 하나 정해서 그 값보다 작으면 왼쪽으로, 중간값보다 크면 오른쪽으로 보내는 과정을 통해 정렬을 진행한다. 분할정렬과 다른점이 있다면 분할정렬은 새로 배열을 만들어 메모리를 비교적 많이 차지한다는 점이고, 퀵 정렬은 재귀를 통해 정렬하는 과정이므로 비교적 메모리를 적게 소모한다는 점이다. 3 22 14 59 1 92 9 이런 배열이 있다고 가정해보자 배열의 중간 값과 나머지 배열과 비교해 작은 값들은 왼쪽, 큰 값들은 오른쪽으로 정렬한다 ([3, 22, 14, 1, 9], 중간 값 59, [92]) 재귀함수로 나누어진 왼쪽과 오른쪽 배열에도 똑같은 과정을 거친다. ([3, 1, 9], 중간 값 14, [22]) 그렇게 모든 배열이 정렬될 때까지 .. 2022. 12. 12.
[알고리즘]삽입정렬(Insertion Sort)_JS 삽입정렬(insertion sort) 손 안의 카드를 순서대로 정리하는 방법과 유사(3이란 카드를 들고 2와 4 사이에 끼워 넣는 느낌) 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하며 해당하는 위치에 삽입함으로써 정렬을 하는 알고리즘 처음 key값은 두 번째 값부터 시작해서 자신보다 왼쪽 인덱스(이미 정렬 된)에 있는 값들과 비교한다. 2 44 21 11 5 위와 같은 배열이 있다고 가정할 때, 먼저 첫번째 key인 44와 2를 비교한다. 앞의 인덱스의 값이 더 작기 때문에 다음 인덱스로 넘긴다 [2,44,21,11,5] key는 21로 바뀌고 21과 2, 44를 비교해 21은 2와 44 사이의 값이기 때문에 해당하는 인덱스에 위치시킨다 [2,21,44,11,5] key는 11.. 2022. 12. 6.
728x90
반응형