본문 바로가기

전체 글

(66)
[Javascript] 프로그래머스 - 입국심사 🧾 목차1. 문제 설명2. 문제 풀이3. 전체 코드1. 문제 설명 n명이 입국심사를 위해 줄을 서서 기다리고 있는데, 모든 사람이 심사를 받는데 걸리는 시간의 최소값을 구하는 문제각 심사원이 한 명을 심사하는 데 걸리는 시간은 모두 다르며, times 배열을 통해 주어진다. 입출력6명이 통과해야한다.총 2명의 심사원은 심사를 하는데 각각 [7분, 10]분이 걸린다. 1) 가장 첫 두 사람은 바로 심사를 하러 간다.2) 7분이 되었을 때, 세번 째 사람이 심사를 받는다.3) 10분이 되었을 때, 네번 째 사람이 심사를 받는다.4) 14분이 되었을 때, 다섯번 째 사람이 심사를 받는다.5) 20분이 되었을 때, 심사대가 비지만 거기서 심사를 받지 않고 21분이 되었을 때 심사를 받는다.6) 28분이 되었을..
[Javascript] 프로그래머스 - 타겟 넘버 🧾 목차1. 문제 설명2. 문제 풀이3. 정답 코드1. 문제 설명n개의 음이 아닌 정수가 있을 경우,1) 이 정수들의 순서를 변경하지 않고 2) 빼거나 더해서 만들 수 있는 수 중에서 타겟 넘버가 될 경우 카운트해라 입출력 제한 사항2  2개의 연산자(+, -)를 사용하여 모든 경우의 수를 구한다면 시간 복잡도는 2^20 ≈ 1,000,000👉 모든 경우의 수를 구해도 됨!2. 문제 풀이2개의 연산자(+, -)를 사용하여 모든 경우의 수를 구해야 하는 문제 => dfs 재귀함수를 구현>1. 모든 숫자를 모두 사용 + 타겟 넘버가 완성된 경우   👉 answer + 1, 종료2. 모든 숫자를 모두 사용 + 미완성  👉 종료 3. 정답 코드function solution(numbers, target)..
[Javascript] 프로그래머스 - 베스트 앨범 🧾 목차1. 문제 설명2. 문제 풀이3. 정답 코드 1. 문제 설명장르별로 가장 많이 플레이된 노래를 2개씩 묶어 배스트 앨범을 만드는 문제입니다. 💡 이 때, 정렬 기준은 다음과 같습니다.1) 총 플레이 수를 기준으로 장르를 정렬 (e.g. classic 과 pop의 총 플레이 수가 더 많은 게 더 먼저)2)  각 장르당 플레이 수를 기준으로 곡 정렬 (e.g. classic의 곡은 총 3개이고, 그 곡들의 플레이 수를 기준으로 정렬) 입출력 2. 문제 풀이1. 변수 선언가장 고민을 많이 했던 부분이였습니다.1) 총 플레이 수를 기준으로 정렬해야함2) 곡 정보를 가지고 있어야 함 👉 [key: value] 를 [인덱스: 플레이 수]3) 각 장르에서 플레이 수를 기준으로 정렬해야함 이 세가지를 염두..
[Javascript] 프로그래머스 - 모음 사전 🧾 목차1. 문제 설명2. 문제 풀이3. 정답 코드1. 문제 설명알파벳 모음 ('A', 'E', 'I', 'O', 'U') 만을 사용하여 만들 수 있는 길이 5 이하의 모든 단어 조합 중입력 문자열(word)은 몇 번 째 인덱스인지 리턴하는 문제이다. 입출력  제한 사항만들 수 있는 단어의 최대 길이는 5 이하이다. 👉 조합을 구현할 함수에서, 현재 단어의 길이가 5다. => 즉시 리턴해야함2. 문제 풀이1) 변수 선언index 변수는 조합을 만들어낼 때마다 1씩 증가를 시킬 예정이다. 2) 조합 함수조합 함수를 구현한다. ⭐ Key point이 때, 얼리 리턴 조건은 다음과 같은데,  1) 원하는 알파벳이 나왔을 경우 => 정답  2) 조합한 문자열이 5글자일 경우 => 제한 조건 (1  이 경우를..
[Javascript] 소수 찾기 🧾 목차1. 문제 설명2. 문제 풀이3. 정답 코드1. 문제 설명나올 수 있는 모든 수의 조합을 구하여, 소수의 개수를 리턴하는 문제이다. 입출력 예제 제한사항- 1 - 중복 가능 (e.g. "011")2. 문제 풀이 가능한 모든 조합을 구하여, 소수인 경우에만 리스트에 넣어주면 된다. 1) 이 때, 만들 수 있는 소수 리스트는 중복을 배제해야한다.e.g. "001", "01" 은 모두 숫자 1로 해석된다는 의미  var primeNumbers = new Set(); // 만들 수 있는 모든 소수 리스트 (중복 x) var len = numbers.length; // 입력 문자열의 길이  2) 소수 판별 함수 구현- 수가 0 또는 1인 경우, 반드시 소수가 아님- 2부터 ~ 제곱근 까지 반복..
[Javascript] 더 맵게 목차1. 문제 설명2. 문제 풀이3. 전체 코드1. 문제 설명모든 음식의 스코빌 지수를 K 이상으로 만드는 데 걸리는 횟수를 구하는 문제이다.K 이상으로 만들기 위해서, 연산을 해야하는데 그 연산은 다음과 같다.섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Key point제한 조건 : 2 가장 적은 두 개의 값을 계속 구해야하는데, 그때그때마다 새로운 적은 값을 구하기 위해서는 시간초과가 발생한다.👉 힙 알고리즘을 구현해내야한다. 2. 문제 풀이1) 기본 코드힙을 구현하기 위한 기본 구조는 다음과 같다.class MinHeap { constructor() { this.heap = []; // 힙 배열 } ..
[Javascript] 가장 큰 수 목차1. 문제 설명2. 문제 풀이3. 정답 코드 1. 문제 설명0 또는 양의 정수들을 집합이 주어졌을 때 그 수들을 붙여서 만들수 있는 가장 큰 수를 구하는 문제이다.입출력 예는 다음과 같다. 주의할 점numbers를 내림차순하여 이어붙인 것이 반드시 가장 큰 수는 아니다.만약, 2번째 예시를 내림차순 방식으로 답을 구한다면 → "9534303" 이다.하지만 가장 큰 수는 "9534330" 이므로, 다른 방식을 찾아야했다! 2. 문제 풀이만약 [3, 30] 이 주어진다면, 가장 큰 수는 "330" 이다.내림차순을 결정하는 수는 2개의 수를 더한 수이다. ( ≠ 각 수를 내림차순) (참고) 기본 sort 함수 사용법[1,2,3,4].sort((a, b)=> b - a); a는 뒷번호, b는 앞번호이다. b..
[Javascript] 롤케이크 자르기 목차1. 문제 설명2. 문제 풀이3. 정답 코드 1. 문제 설명다음 문제는 롤케이크를 자르는 문제이다.롤케이크에는 토핑이 올라가 있으며, 토핑의 종류는 숫자로 표시된다. (ex. 1, 2, 3...)철수는 롤케이크를 2조각으로 나눠 동생과 나눠가져야하는데,공평하게 나누기 위하여 다음 조건을 만족해야한다.=> 토핑의 가지수가 동일해야 함 이 때, topping의 개수가 1,000,000로 매우 큰 숫자임을 주의해야한다.  2. 문제 풀이topping의 개수가 1,000,000로 매우 큰 숫자이므로, 롤케이크를 자르는 행위는 선형 탐색으로 해결해야한다는 것을 알았다. 변수각 조각이 가진 토핑들을 저장할 객체와 가짓 수를 카운트할 변수를 선언해야한다. 로직1. 초기 상태 : 모든 토핑을 오른쪽 조각에 우선 배..