728x90
[프로그래머스] (Java) 배달 - 다익스트라 알고리즘 문제 설명N개의 마을로 이뤄진 나라는 아래의 특징을 지닌다.각 마을에는 1 ~ N까지 번호가 각각 하나씩 부여되어 있다.각 마을은 양방향 도로로 연결되어 있다.도로를 지날 때 소요되는 시간은 도로별로 다르다.1번 마을에 있는 음식점에서 각 마을로 음식 배달을 하려고 할 때, N개 마을 중에서 K시간 이하로 배달이 가능한 마을의 개수를 구하려고 한다. 예를 들어, N = 5, K = 3인 경우 위와 같은 마을이 있다면,1번 마을에 있는 음식점은 [1, 2, 4, 5] 번 마을까지 3 이하의 시간에 배달할 수 있다. 그러나 3번 마을은 3시간이 초과되므로 3번 마을에서는 주문을 받지 않아, 최종적으로 주문을 받을 수 있는 마을의 개수는 4개가 된다. ..
[프로그래머스] (JavaScript) 단어 변환 - BFS문제 설명두 개의 단어 begin, target 과 단어의 집합 words 가 있다. 아래의 규칙을 이용하여 begin 에서 target 으로 변환하는 가장 짧은 변환 과정을 찾으려 한다. 한 번에 한 개의 알파벳만 바꿀 수 있다.words 에 있는 단어로만 변환할 수 있다.예를 들어 begin 이 "hit", target 가 "cog", words 가 ["hot", "dot", "dog", "lot", "log", "cog"] 라면"hit" > "hot" > "dot" > "dog" > "cog" 와 같이 4단계를 거쳐 변환할 수 있음 두 개의 단어 begin, target 과 단어의 집합 words 가 매개변수로 주어질 때, 최소 몇 단계의 ..
[프로그래머스] (JavaScript) 네트워크 - DFS문제 설명네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미한다.예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어 있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers 가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하자.제한 사항컴퓨터의 개수 n 은 1 이상 200 이하인 자연수각 컴퓨터는 0부터 n - 1 인 정수로 표현i 번 컴퓨터와 j 번 컴퓨터..
[프로그래머스] (JavaScript) 타겟 넘버 - DFS문제 설명n개의 음이 아닌 정수들이 있다. 이 정수들을 순서를 바꾸지 않고 더하거나 빼서 타겟 넘버를 만드려 한다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 사용할 수 있다. - 1 + 1 + 1 + 1 + 1 = 3+ 1 - 1 + 1 + 1 + 1 = 3+ 1 + 1 - 1 + 1 + 1 = 3+ 1 + 1 + 1 - 1 + 1 = 3+ 1 + 1 + 1 + 1 - 1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target 이 매개변수로 주어질 때, 숫자를 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성하자.제한 사항주어지는 숫자의 개수..
[프로그래머스] (JavaScript) 피로도 - DFS문제 설명XX게임에 피로도 시스템(0 이상의 정수로 표현)이 있으며, 일정 피로도를 사용하여 던전을 탐험할 수 있다.이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있다."최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도이고,"소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타낸다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상이어야 하며, 탐험한 후에 피로도 20이 소모된다. 이 게임에는 하루에 한 번씩 탐험할 수 있는 던전이 여러 개 있는데, 한 유저가 ..