본문 바로가기

분류 전체보기89

[algorithm] Max Heap 구현하기 프로그래머스 기준 레벨이 3 정도 되면, Heap을 사용해야 하는 일이 생긴다. 하지만, 다른 언어와 달리 JavaScript에는 MaxHeap이 없기 때문에 직접 구현을 해서 사용해야 한다. 하나 만들어 둔 후, 문제를 풀 때 갖다 쓰면 편하다. 배열의 index를 조정해 이진 트리 구조로 사용하였다. 자식 노드는 부모 노드의 2배만큼의 index를 갖는다. 계산을 쉽게 해주기 위해 0번 index에는 가장 큰 수를 할당하여 채워주었고, 실제로는 1 index부터 시작한다. constructor() { this.heap = []; this.heap.push(1e9); } 값을 추가(insert)하면 일단, 배열에 값을 넣어준 후, upheap을 해준다. upheap은 가장 마지막의 숫자가 자신의 부모보.. 2023. 5. 15.
[programmers] 문자열 겹쳐쓰기, 문자 리스트를 문자열로 변환하기, 홀짝 구분하기, 문자열 곱하기, 문자열 섞기 📝 [Lv0] 문자열 겹쳐쓰기 👀 문제 설명 문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요. 🚨 제한 사항 my_string와 overwrite_string은 숫자와 알파벳으로 이루어져 있습니다. 1 ≤ overwrite_string의 길이 ≤ my_string의 길이 ≤ 1,000 0 ≤ s ≤ my_string의 길이 - overwrite_string의 길이 💻 입출력 예 my_string overwrite_string s result "He11oWor1d" "lloWorl.. 2023. 5. 14.
[programmers] 택배상자 📝 [Lv2] 택배상자 👀 문제 설명 영재는 택배상자를 트럭에 싣는 일을 합니다. 영재가 실어야 하는 택배상자는 크기가 모두 같으며 1번 상자부터 n번 상자까지 번호가 증가하는 순서대로 컨테이너 벨트에 일렬로 놓여 영재에게 전달됩니다. 컨테이너 벨트는 한 방향으로만 진행이 가능해서 벨트에 놓인 순서대로(1번 상자부터) 상자를 내릴 수 있습니다. 하지만 컨테이너 벨트에 놓인 순서대로 택배상자를 내려 바로 트럭에 싣게 되면 택배 기사님이 배달하는 순서와 택배상자가 실려 있는 순서가 맞지 않아 배달에 차질이 생깁니다. 따라서 택배 기사님이 미리 알려준 순서에 맞게 영재가 택배상자를 실어야 합니다. 만약 컨테이너 벨트의 맨 앞에 놓인 상자가 현재 트럭에 실어야 하는 순서가 아니라면 그 상자를 트럭에 실을 순서가.. 2023. 5. 11.
[programmers] 숫자 카드 나누기 📝 [Lv2] 숫자 카드 나누기 👀 문제 설명 철수와 영희는 선생님으로부터 숫자가 하나씩 적힌 카드들을 절반씩 나눠서 가진 후, 다음 두 조건 중 하나를 만족하는 가장 큰 양의 정수 a의 값을 구하려고 합니다. 철수가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고 영희가 가진 카드들에 적힌 모든 숫자들 중 하나도 나눌 수 없는 양의 정수 a 영희가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고, 철수가 가진 카드들에 적힌 모든 숫자들 중 하나도 나눌 수 없는 양의 정수 a 예를 들어, 카드들에 10, 5, 20, 17이 적혀 있는 경우에 대해 생각해 봅시다. 만약, 철수가 [10, 17]이 적힌 카드를 갖고, 영희가 [5, 20]이 적힌 카드를 갖는다면 두 조건 중 하나를 만족하는 양의 정수 a는 존재하.. 2023. 5. 10.
[programmers] 요격 시스템 📝 [Lv2] 요격 시스템 👀 문제 설명 A 나라가 B 나라를 침공하였습니다. B 나라의 대부분의 전략 자원은 아이기스 군사 기지에 집중되어 있기 때문에 A 나라는 B 나라의 아이기스 군사 기지에 융단폭격을 가했습니다. A 나라의 공격에 대항하여 아이기스 군사 기지에서는 무수히 쏟아지는 폭격 미사일들을 요격하려고 합니다. 이곳에는 백발백중을 자랑하는 요격 시스템이 있지만 운용 비용이 상당하기 때문에 미사일을 최소로 사용해서 모든 폭격 미사일을 요격하려 합니다. A 나라와 B 나라가 싸우고 있는 이 세계는 2 차원 공간으로 이루어져 있습니다. A 나라가 발사한 폭격 미사일은 x 축에 평행한 직선 형태의 모양이며 개구간을 나타내는 정수 쌍 (s, e) 형태로 표현됩니다. B 나라는 특정 x 좌표에서 y 축에.. 2023. 5. 9.
[programmers] 전력망을 둘로 나누기 📝 [Lv2] 전력망을 둘로 나누기 👀 문제 설명 n개의 송전탑이 전선을 통해 하나의 트리 형태로 연결되어 있습니다. 당신은 이 전선들 중 하나를 끊어서 현재의 전력망 네트워크를 2개로 분할하려고 합니다. 이때, 두 전력망이 갖게 되는 송전탑의 개수를 최대한 비슷하게 맞추고자 합니다. 송전탑의 개수 n, 그리고 전선 정보 wires가 매개변수로 주어집니다. 전선들 중 하나를 끊어서 송전탑 개수가 가능한 비슷하도록 두 전력망으로 나누었을 때, 두 전력망이 가지고 있는 송전탑 개수의 차이(절대값)를 return 하도록 solution 함수를 완성해주세요. 🚨 제한 사항 n은 2 이상 100 이하인 자연수입니다. wires는 길이가 n-1인 정수형 2차원 배열입니다. wires의 각 원소는 [v1, v2] 2.. 2023. 5. 8.