본문 바로가기

알고리즘6

프로그래머스 최솟값 만들기 - 자바스크립트 코드 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제에 의하면 주어진 두 배열 A,B에서 각각 한 개씩 숫자를 뽑아 곱하고 이 과정을 배열의 길이만큼 수행한 다음 각 곱셈에 대한 값들을 누적으로 합한 답 중 최솟값을 반환해야 한다. 최솟값을 구하는 방법은 쉽다. A 배열에서 가장 큰 수, B 배열에서 가장 작은 수를 곱하고 그 다음으로 A 배열에서 가장 큰 수 그 다음으로 B 배열에서 가장 작은 수를 곱하는 식으로 반복하면 된다. 물론 B 배열에서 가장 큰 수와 A 배열에서 가장 작은 수를 찾아내며 곱하는 방식을 채택해도 상관없다. 나는 A 배열에서는 가장 작은 수를 B 배열에서는 가장 큰 수를 찾아서 곱.. 2024. 11. 24.
프로그래머스 로또의 최고 순위와 최저 순위 - 자바스크립트 풀이 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다.민우의 동생은 뭐가 문제일까요? ☹️문제 풀이 자바스크립트 코드입니다function solution(lottos, win_nums) { let answer = [6,6]; const wins = win_nums.filter(x => lottos.includes(x)); answer[1] = 7 - (wins.length || 1); // 최저 순위 answer[0] = 7 - ((lott.. 2024. 11. 24.
[자료구조] 트리 Tree - 자바스크립트(Javascript)로 구현하기 트리(Tree) 트리는 비순차적인 자료 구조로 정보 검색에 용이하다. 부모 자식 관계를 가진 다수 노드로 구성된다. 밑의 그림과 같이 트리 모양의 자료구조를 트리라고 하는 것이다. 루트 root: 트리의 최상위 노드로 루트라고 한다. 그림에서는 12값을 가진 노드에 해당한다. 서브트리: 노드와 자식 노드로 구성되어있다. 그림에선 5,3,6 / 9,8,10 / 17,14,22 등이 해당한다. 노드 위에서 트리는 노드로 구성되어 있다고 하였다. 노드는 왼쪽 자식과 오른쪽 자식의 참조(포인터)를 가리킨다. 위의 그림에서 3,6,8,10,13,15,18,23 키에 해당하는 노드들은 자식이 없으므로 왼쪽 자식 참조 값과 오른쪽 자식 참조 값이 null이 된다. 루트 노드를 그림으로 나타내면 위와 같다. 이때 노드.. 2023. 9. 4.
[자료구조] 힙 Heap 자바스크립트(Javascript)로 구현하기 힙 Heap 이란? 최댓값과 최솟값을 찾아내는 연산을 빠르게 수행하고자 고안된 이진트리 기반 데이터 구조이다. 삽입과 삭제 시 O(log n)의 시간복잡도를 가진다. 최대 힙 Max Heap 상위 노드에 제일 큰 값이 위치한다. 위의 트리구조 힙을 배열로 나타내면 아래와 같다. 부모 노드 인덱스 & 자식 노드 인덱스 구하기 부모 노드 인덱스 : 자식 노드 인덱스 / 2 왼쪽 자식 노드 인덱스 : 부모 노드 인덱스 * 2 + 1 오른쪽 자식 노드 인덱스 : 부모 노드 인덱스 * 2 + 2 삽입 기존의 최소 힙에 새로운 값 17을 삽입한다고 해보자. → 코드 상에서 add(17)에 해당 위와 같이 마지막 노드의 왼쪽부터 삽입할 노드를 추가한다. 그 후 부모 노드와 크기를 비교하며 정렬해나간다. → 코드 .. 2023. 8. 29.