본문 바로가기

Algorithm

(12)
Algorithm [정렬 : 버블정렬(bubbleSort)] 버블 정렬이란? 서로 인접한 두 원소를 검사하여 정렬하는 알고리즘 인접한 2개의 레코드를 비교하여 크기가 순서대로 되어 있지 않으면 서로 교환한다. 선택 정렬과 기본 개념이 유사하다. 버블 정렬(bubble sort) 알고리즘의 구체적인 개념 버블 정렬은 첫 번째 자료와 두 번째 자료를, 두 번째 자료와 세 번째 자료를, 세 번째와 네 번째를, … 이런 식으로 (마지막-1)번째 자료와 마지막 자료를 비교하여 교환하면서 자료를 정렬한다. 1회전을 수행하고 나면 가장 큰 자료가 맨 뒤로 이동하므로 2회전에서는 맨 끝에 있는 자료는 정렬에서 제외되고, 2회전을 수행하고 나면 끝에서 두 번째 자료까지는 정렬에서 제외된다. 이렇게 정렬을 1회전 수행할 때마다 정렬에서 제외되는 데이터가 하나씩 늘어난다. conso..
Algorithm:[정렬 : 정렬별 장단점 및 시간복잡도] 정렬 데이터의 집합을 어떠한 기준(핵심항목, key)의 대소관계를 따져 일정한 순서로 줄지어 세우는 것 JavaScript에서는 그저 제공하는 sort()를 통해서 정렬을 하고있지만 그안에 숨어져있는 알고리즘들과 그 종류들 그리고 그것의 장단점을 알고자 합니다. (보통 상황에 맞는 정렬방식으로 자동 사용된다고 합니다) 정렬별 장단점 및 시간복잡도를 비교 사실 이 정렬법이 무조건 제일 좋다는 정렬법은 없다고 합니다. 그이유는 정렬법들 모두 각각의 장단점이 있기 때문입니다. # 버블정렬(Bubble Sort) ## O(N^2) 장점 일단 구현이 쉬움 코드 자체가 직관적 단점 굉장히 비효율적 최악이든 최선이든 O(N^2) # 선택정렬(Selection Sort) ## O(N^2) 장점 선택정렬 또한 버블정렬과..
Algorithm[공부: 최댓값과 최솟값] 최댓값과 최솟값 문제 설명(ref) 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다. 제한 조건 s에는 둘 이상의 정수가 공백으로 구분되어 있습니다. 입출력 예 s return "1 2 3 4" "1 4" "-1 -2 -3 -4" "-4 -1" "-1 -1" "-1 -1" 내 코드 Logic 띄여쓰기 단위로 구분을 만들어서 숫자를 정렬하여서 가장 낮은 숫자와 가장 높은 숫자를 추출후 결과값에 맞게 데이터수정후 출력 function sol..
Algorithm2[공부 : 숫자의 표현] 문제 설명 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개 입니다 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다. - 1 + 2 + 3 + 4 + 5 = 15 - 4 + 5 + 6 = 15 - 7 + 8 = 15 - 15 = 15 자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요. 제한사항 n은 10,000 이하의 자연수 입니다. 입출력 예 n result 15 4 내가 처음 푼 풀이 (틀림) Logic 1은 무조건 있고 2는 홀수면 있음 3이상부터는 나누어지면 있음 약수를 구해서 1,2 3이상의 홀수 여야함 약수와 반대편에 있는 약수 중 작은수가 큰수의 절반보다 커야함 function solution(n) ..
Algorithm[공부 : 큰수 만들기] 문제 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 - number는 2자리 이상, 1,000,000자리 이하인 숫자입니다. - k는 1 이상 number의 자릿수 미만인 자연수입니다. number k return "1924" 2 "94" "1231..
Algorithm[공부 : 카펫(carpet)(완전탐색) ] 카펫 문제 설명Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 ..
Algorithm [풀기 : 부족한 금액] 내가푼 풀이 function solution(price, money, count) { let usePrice = price; let needPrice = 0; for (let i = 0; i < count; i++) { needPrice += usePrice; usePrice += price; } console.log('needPrice:', needPrice); let result = needPrice - money; if (result < 0) { result = 0; } return result; } 가우스 공식 활용 (등차수열 합공식) function solution(price, money, count) { const tmp = (price * count * (count + 1)) / 2 - mo..
프로그래머스 땅따먹기 공부 처음 푼 코드 문제점 : 모든 경우에 수를 다 파악함 -> 최적화 안됨 function solution(land) { let result = []; // bfs 사용 function repeat(arrs, num, idx) { // 탈줄조건 if (arrs.length === 0) { result.push(num); console.log('pushresult:', num); console.log(); console.log(); return; } let arr = arrs.shift(); for (let i = 0; i < arr.length; i++) { // 전에 사용했었언 idx이면 넘어감 if (idx === i) { continue; } console.log('arrs:', arrs); conso..