일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 3진수
- map()
- sort()
- jsx반복문
- slice()
- Math.sqrt()
- toUpperCase()
- React
- parseInt()
- useRef()
- setDate
- 차집합
- isNaN()
- includes()
- useState()
- useEffect()
- Math.floor()
- repeat()
- indexOf()
- getday()
- filter()
- 소수점 올림내림
- charAt()
- reat if문
- Number()
- Eventlitener
- 항해99솔직후기 #항해99장점 #항해99단점 #부트캠프추천
- 교집합
- substring()
- new Date()
- Today
- Total
목록알고리즘 (55)
개발자로 전향중
1. 선택정렬 (Selection Sort) 앞에서부터 차례대로 정렬하는 방법이다. 먼저 주어진 리스트 중에 최소값을 찾고 그 값을 맨 앞에 위치한 값과 교체하는 방식으로 진행하는 정렬방법이다. 최적 효율은 내림차순으로 정렬되어 있는 자료를 오름차순으로 정렬할 때이며, 반대로 이미 정렬된 상태에서 소수 자료가 추가됨으로 재정렬하게 될 때에는 최악의 처리 속도를 보여준다. Java 구현 2. 버블정렬 (Bubble Sort) 첫 번째 원소부터 인접한 원소끼리 계속 자리를 교환하면서 맨 끝부터 정렬하는 방식을 말한다. 데이터를 하나씩 비교할 수 있어 정밀하게 비교 가능하나 비교횟수가 많아지므로 성능면에서 좋은 방법이 아니다. Java 구현 3. 삽입정렬 (Insertion Sort) 자료 배열의 모든 요소를..
암호학에서의 브루트 포스(brute force attack)가 아닌 알고리즘의 브루트 포스(brute force search)에 관한 것을 작성한다. 브루트 포스(brute force) brute: 무식한, force: 힘 무식한 힘으로 해석할 수 있다. 완전탐색 알고리즘. 즉, 가능한 모든 경우의 수를 모두 탐색하면서 요구조건에 충족되는 결과만을 가져온다. 이 알고리즘의 강력한 점은 예외 없이 100%의 확률로 정답만을 출력한다. - 일반적 방법으로 문제를 해결하기 위해서는 모든 자료를 탐색해야 하기 때문에 특정한 구조를 전체적으로 탐색할 수 있는 방법을 필요로 한다. - 알고리즘 설계의 가장 기본적인 접근 방법은 해가 존재할 것으로 예상되는 모든 영역을 전체 탐색하는 방법이다. - 선형 구조를 전체적..
❗️탐욕 알고리즘(Greedy Algorithm)이란? Greedy는 ‘탐욕스러운, 욕심 많은’ 이란 뜻이다. 탐욕 알고리즘은 말 그대로 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에 도달하는 방법이다. 탐욕 알고리즘은 최적해를 구하는 데에 사용되는 근사적인 방법이다. 탐욕 알고리즘은 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행하여 최종적인 해답에 도달한다. 순간마다 하는 선택은 그 순간에 대해 지역적으로는 최적이지만, 그 선택들을 계속 수집하여 최종적(전역적)인 해답을 만들었다고 해서, 그것이 최적이라는 보장은 없다. 하지만 탐욕 알고리즘을 적용할 수 있는 문제들은 지역적으로 최적이면서 전역적으로 최적인 문제들이다...
👉 Big-O 표기법의 종류 O(1) O(n) O(log n) O(n2) O(2n) ❗️O(1) O(1)는 일정한 복잡도(constant complexity)라고 하며, 입력값이 증가하더라도 시간이 늘어나지 않는다. 다시 말해 입력값의 크기와 관계없이, 즉시 출력값을 얻어낼 수 있다는 의미이다. 👉 O(1)의 시간 복잡도를 가진 알고리즘 function O_1_algorithm(arr, index) { return arr[index]; } let arr = [1, 2, 3, 4, 5]; let index = 1; let result = O_1_algorithm(arr, index); console.log(result); // 2 이 알고리즘에선 입력값의 크기가 아무리 커져도 즉시 출력값을 얻어낼 수 있다..
시간 복잡도(Time Complexity) 및 공간 복잡도(Space Complexity) 알고리즘을 평가할 때 시간 복잡도와 공간 복잡도를 사용합니다. 시간 복잡도: 알고리즘의 수행시간을 평가 공간 복잡도: 알고리즘 수행에 필요한 메모리 양을 평가 시간 복잡도와 공간 복잡도는 주로 점근적 표기법 중 빅오 표기법을 이용하여 나타냅니다. 이유는 최악의 경우에도 해당 알고리즘이 어떤 성능을 낼지 가늠해볼 수 있기 때문입니다. 시간 복잡도(Time Complexity) 알고리즘의 수행 시간을 분석할 때 시간 복잡도를 사용합니다. 수행 시간은 실행환경에 따라 다르게 측정되기 때문에 기본 연산의 실행 횟수로 수행 시간을 평가합니다. 기본 연산은 다음과 같습니다. 데이터 입출력 - copy, move... 산술 연..
// Statistics // For submit // const fs = require('fs'); // const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n').map(num => parseInt(num)); // For local test // const input = [5, 1, 3, 8, -2, 2]; // const input = [1, 4000]; const input = [5, -1, -2, -3, -1, -2]; const N = input.shift(); const sortedNumArr = input.sort((a, b) => a - b); const numMap = {}; for (let num of sort..
문제를 풀기 위한 아이디어 규칙이 복잡해보이지만 숫자를 대입하여 생각해보면 결국 바로 인접한 집끼리만 다른 색이면 된다는 것이다. 일단 주어진 각 집을 빨강,초록,빨강으로 칠하는 비용들을 2차원 배열에 저장한다. input = [ [26, 40, 83], [49, 60, 57], [13, 89, 99] ] 그 다음으로는 첫번째집을 R로 칠한 경우 / 첫번째 집을 G로 칠한 경우 / 첫번째 집을 B로 칠한 경우를 모두 다 따져주면 된다. 이를 점화식으로 세우면, 두번째 집부터는 다음과 같은 점화식이 성립한다. input[i][0] = min(input[i-1][1], input[i-1][2]) + input[i][0] input[i][1] = min(input[i-1][0], input[i-1][2]) +..
++문제문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 예제 입출력 입력 출력 6 10 20 10 30 20 50 4 풀이[node.js] var fs = require('fs'); var inputs = fs.readFileSync('/dev/s..