DFS

Algorithm/Programmers

[알고리즘/프로그래머스/카카오] 양과 늑대

문제 https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 이진 트리를 탐색하면서 양이 늑대에게 잡아먹히지 않도록 하는 양의 최댓값을 구하는 문제이다. 방문한 늑대 노드의 수가 방문한 양 노드 수 이상인 경우 늑대는 양을 모두 잡아먹는다. 트리 전체를 탐색하면서 방문한 양과 늑대 개수를 세야하고 info의 최댓값도 작기 때문에 DFS 문제이다. 하지만 일반적인 DFS와 다르게 노드를 재방문해야 하는 경로가 있기 때문에 어려웠다. 예를 들어, 예..

Algorithm/Programmers

[알고리즘/프로그래머스/고득점Kit] 여행경로(DFS, JS)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/43164# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 주어진 항공권을 모두 이용해 여행경로를 짤 때, 방문하는 공항 경로를 구하는 문제이다. 이때 주의할 점은 가능한 경로가 여러 개 있다면, 알파벳 순서가 앞서는 경로를 반환해야 한다는 것이다. 이 조건을 만족하기 위해 tickets 배열을 먼저 정렬해준다. 자바스크립트 sort는 기본적으로 알파벳 오름차순 순서로 배열을 해주고, 2차원 배열의 경우 첫 번째 요소가 같은 경우, 두 번째 ..

Algorithm/Programmers

[알고리즘/프로그래머스/카카오] 메뉴 리뉴얼(JS)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 2명 이상이 주문한 2개 이상의 조합을 구해야 한다. - 각 course 돌면서 course 개수만큼 order의 조합 만들기(DFS) - 구한 조합 돌면서 [조합]의 개수 증가시키기 ** 오름차순 정렬 필요 - 각 개수에 해당하는 최댓값 찾아서 -> 최댓값 && 해당 개수인 조합 answer.push() - answer.sort() 오름차순 주의해야할 점은 "WX"와 "XW"를 같은 ..

Algorithm/BOJ

[알고리즘/백준/14502] 연구소(BFS, DFS, Nodejs)

문제 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 풀이 0은 빈 칸, 1은 벽, 2는 바이러스가 있고, 바이러스는 4방향으로 퍼져나갈 수 있다. 이때 벽을 3개 세운 뒤 바이러스가 퍼질 수 없는 영역인 안전 영역의 최대 크기를 찾는 문제이다. 1. 0인 구간 가운데 3개 고르기 (3중 for문 또는 DFS) 2. 2인 경우 큐에 넣어서 BFS 돌리면서 2로 바꾸고 3. 전체 탐색하면서 0인 곳 개수 세서 최댓값 찾기 이때 주의해야할 점은 3개를 선정하고..

Algorithm/BOJ

[알고리즘/백준/2668] 숫자고르기(Nodejs, DFS)

문제 https://www.acmicpc.net/problem/2668 2668번: 숫자고르기 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절 www.acmicpc.net 풀이 const fs = require("fs"); const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt"; let [N, ...nums] = fs .readFileSync(filePath) .toString() .trim() .split("\n") .map(Number); const answer ..

Algorithm/BOJ

[알고리즘/백준/14501] 퇴사

문제 https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 풀이 const fs = require("fs"); const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt"; let [num, ...arr] = fs.readFileSync(filePath).toString().trim().split("\n"); const n = +num; const schedule = arr.map((row) => row.split(" ").map(Number)); let maxVal = Number.MIN_SAFE_INTEGE..

Algorithm/BOJ

[알고리즘/백준/5568] 카드 놓기(Nodejs, 완전탐색)

문제 https://www.acmicpc.net/problem/5568 5568번: 카드 놓기 예제 1의 경우 상근이는 11, 12, 21, 112, 121, 122, 212를 만들 수 있다. www.acmicpc.net 풀이 const fs = require("fs"); const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt"; let [n, k, ...cards] = fs.readFileSync(filePath).toString().trim().split("\n"); const [N, K] = [n, k].map(Number); const nums = []; const ch = Array.from({ length: 100..

Algorithm/BOJ

[알고리즘/백준/18511] 큰 수 구성하기(Nodejs, DFS)

문제 https://www.acmicpc.net/problem/18511 18511번: 큰 수 구성하기 첫째 줄에 N, K의 원소의 개수가 공백을 기준으로 구분되어 자연수로 주어진다. (10 ≤ N ≤ 100,000,000, 1 ≤ K의 원소의 개수 ≤ 3) 둘째 줄에 K의 원소들이 공백을 기준으로 구분되어 주어진다. 각 www.acmicpc.net 풀이 const fs = require("fs"); const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt"; let [n, arr] = fs.readFileSync(filePath).toString().trim().split("\n"); const [N, K] = n.split..

개발자 김비숑
'DFS' 태그의 글 목록