전체 글 67

[Javascript] 프로그래머스 - 아이템 줍기

목차1. 문제 풀이  1) 테두리 구하기  2) 테두리 이동할 때, 풀이법 (❌ 주의: 칸 이동과 다름)2. 전체 코드3. 느낀 점1. 문제 풀이그림과 같이 여러 다각형이 배열 형태로 주어질 때, 테두리 정보를 배열에 저장해두어야 한다.출발지 (x, y) 에서 목적지 (x, y) 에 도달할 때까지 걸리는 가장 짧은 거리를 계산하기 위해서는 bfs 코드를 수행한다. 직사각형 입력 형식직사각형 배열은 [fromX, fromY, toX, toY] 로 주어지며, 각각 왼쪽 아래 꼭짓점과 오른쪽 위 꼭짓점 정보이다.예를 들어, 가장 아래의 직사각형은 [1,1,7,4] 로 주어진다. 처음 생각한 방식처음에 생각한 방식은 직사각형이 주어질 때, 모든 선분을 1로 만드는 것이였다.그리고 1과 0(초기화) 경계에 있는 ..

Algorithm 2025.02.05

[Javascript] 프로그래머스 - 전력망을 둘로 나누기

🧾 목차1. 문제 설명2. 문제 풀이3. 전체 코드 (dfs)4. 다른 풀이 (bfs)1. 문제 설명n개의 송전탑이 트리 형태로 연결되어 있음.주어진 전선들 중 하나를 끊어서 트리를 두 개의 전력망으로 분할해야 함.두 전력망의 송전탑 개수 차이(절대값)를 최소화하는 경우를 찾아야 함.이 최소 차이를 return 하는 함수를 구현해야 함.2. 문제 풀이트리에서 한 곳의 연결을 끊으면 2개로 나눠진다.만약 [a, b] 를 끊었다면 a, b 노드는 각각 다른 트리에 속한다.따라서 a에서 시작하는 dfs 순회를 돌려서 트리에 속한 노드 개수를 구하고, 2n 에서 개수를 빼서 절댓값을 구하면 된다. 1️⃣ 연결 초기화 2️⃣ dfs 함수[a, b] 연결을 끊어서 a 부터 dfs를 돌린다면 exceptV는 b로 ..

Algorithm 2025.02.04

[Javascript] 프로그래머스 - 네트워크

목차1. 문제 설명2. 문제 풀이3. 전체 코드1. 문제 설명n 개의 컴퓨터가 있을 때, 네트워크 개수를 계산한다.☁ 네트워크란 컴퓨터가 연결된 형태를 의미한다.if) A - B 와 B - C 가 연결되어 있다면 A - B - C는 하나의 네트워크 안에 있다고 할 수 있다. 입출력 => n 개의 컴퓨터, 그리고 컴퓨터의 연결 정보가 주어질 때, 네트워크의 개수를 리턴한다. 첫번째 예시 두번째 예시2. 문제 풀이각 노드의 연결과 관련된 문제이므로, dfs 로 해결하였다.1) dfs 를 한번 호출했을 때, 연결된 컴퓨터를 모두 방문할 수 있다.2) 연결되지 않은 컴퓨터는 다시 dfs 를 호출해야 한다. 초기화 dfs 함수 dfs 함수를 호출하는 부분 시간복잡도1) 전체 네트워크 탐색 과정 → O(N)2) 한..

Algorithm 2025.02.03

[Javascript] 프로그래머스 - 징검다리

🧾 목차1. 설명2. 알고리즘 접근3. 문제 풀이4. 전체 코드1. 설명1️⃣ 문제 분석출발 지점부터 목적 지점(distance) 사이의 돌 들이 있다.그 돌중에서 n 개의 돌을 삭제하여 각 구간(남은 돌 사이 거리)의 최소 값을 구하고,이 최소값들 중 가장 큰 값(최대 최소 거리)을 구하는 문제이다. 2️⃣ 입출력돌의 개수(rocks.length)가 5일 때, 2개의 돌을 삭제하는 경우의 수는,C(5, 2) = 10총 10가지의 경우의 수가 존재한다. 해결과정1) 2개의 돌을 선택하여 제거(총 10가지 조합 가능)2) 남은 돌들 사이의 거리를 계산3) 각 경우마다 최소 거리값을 구함4) 이 최소값들 중 가장 큰 값을 구하면, 4이다. 3️⃣ 제한사항  완전 탐색의 경우, C(바위 개수, 삭제할 바위 ..

Algorithm 2025.01.30

[Javascript] 프로그래머스 - 퍼즐 게임 챌린지

🧾 목차1. 문제 설명2. 문제 풀이3. 정답 코드4. 총평1. 문제 설명https://school.programmers.co.kr/learn/courses/30/lessons/340212 퍼즐 해결 시 소요 시간 계산 방법예제 조건- 퍼즐 난이도 : 1,5,3- 퍼즐당 기본 시간 : 2,4,7- 나의 레벨 : 1 계산 과정1. 첫 번째 퍼즐 (난이도 1, 시간 2)- 내 레벨(1)과 같으므로, 소요 시간 = 2 2. 두 번째 퍼즐 (난이도 5, 시간 4)- 난이도 (5) > 내 레벨(1)이므로 추가 시간 발생 - 추가 시간 공식  👉 (이전 퍼즐 소요 시간 + 현재 퍼즐 소요 시간 ) x (퍼즐 난이도 - 내 레벨) + 현재 퍼즐 소요 시간 - 적용  (2 + 4) x (5 - 1) + 4 = 6 ..

Algorithm 2025.01.29

[Javascript] 프로그래머스 - 입국심사

🧾 목차1. 문제 설명2. 문제 풀이3. 전체 코드1. 문제 설명 n명이 입국심사를 위해 줄을 서서 기다리고 있는데, 모든 사람이 심사를 받는데 걸리는 시간의 최소값을 구하는 문제각 심사원이 한 명을 심사하는 데 걸리는 시간은 모두 다르며, times 배열을 통해 주어진다. 입출력6명이 통과해야한다.총 2명의 심사원은 심사를 하는데 각각 [7분, 10]분이 걸린다. 1) 가장 첫 두 사람은 바로 심사를 하러 간다.2) 7분이 되었을 때, 세번 째 사람이 심사를 받는다.3) 10분이 되었을 때, 네번 째 사람이 심사를 받는다.4) 14분이 되었을 때, 다섯번 째 사람이 심사를 받는다.5) 20분이 되었을 때, 심사대가 비지만 거기서 심사를 받지 않고 21분이 되었을 때 심사를 받는다.6) 28분이 되었을..

Algorithm 2025.01.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)..

Algorithm 2025.01.28

[Javascript] 프로그래머스 - 베스트 앨범

🧾 목차1. 문제 설명2. 문제 풀이3. 정답 코드 1. 문제 설명장르별로 가장 많이 플레이된 노래를 2개씩 묶어 배스트 앨범을 만드는 문제입니다. 💡 이 때, 정렬 기준은 다음과 같습니다.1) 총 플레이 수를 기준으로 장르를 정렬 (e.g. classic 과 pop의 총 플레이 수가 더 많은 게 더 먼저)2)  각 장르당 플레이 수를 기준으로 곡 정렬 (e.g. classic의 곡은 총 3개이고, 그 곡들의 플레이 수를 기준으로 정렬) 입출력 2. 문제 풀이1. 변수 선언가장 고민을 많이 했던 부분이였습니다.1) 총 플레이 수를 기준으로 정렬해야함2) 곡 정보를 가지고 있어야 함 👉 [key: value] 를 [인덱스: 플레이 수]3) 각 장르에서 플레이 수를 기준으로 정렬해야함 이 세가지를 염두..

Algorithm 2025.01.25

[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  이 경우를..

Algorithm 2025.01.22

[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부터 ~ 제곱근 까지 반복..

Algorithm 2025.01.21
728x90