[프로그래머스] 네트워크 - 파이썬(Python) / BFS, DFS 네트워크 문제 설명 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 제한 사항 컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다. 각 컴퓨터는 0부터 n-1인 정수로 표현합니다. i번 컴퓨터와 j번 컴퓨터가 연결되어 있으면 comp.. Python/프로그래머스 / 2021. 12. 31. / Yoonkie
[프로그래머스] 타겟 넘버 - 파이썬 / DFS, BFS 타겟 넘버 문제 설명 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 함수를 작성해주세요. 제한 사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 1000 이하인 자.. Python/프로그래머스 / 2021. 12. 30. / Yoonkie
[Python] DFS, BFS 구현 DFS (Depth-First Search) DFS는 깊이 우선 탐색이라고도 부르며 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘입니다. DFS는 스택 자료구조(또는 재귀함수)를 이용합니다. 탐색 시작 노드를 스택에 삽입하고 방문 처리합니다. 스택의 최상단 노드에 방문하지 않은 인접한 노드가 하나라도 있으면 그 노드를 스택에 넣고 방문 처리합니다. 방문하지 않은 인접 노드가 없다면 최상단 노드를 꺼냅니다. 더이상 2번의 과정을 수행할 수 없을 때까지 반복합니다. DFS의 과정 그래프가 다음과 같이 주어졌을 때, 방문 기준은 번호가 낮은 인접노드 순으로 가정합니다. 깊이 우선 탐색이므로 가장 낮은 노드 1번 부터 시작해서 인접 노드 2,3을 확인합니다. 방문 기준에 따라 2번을 골라서 들어가고, 2번.. Python/알고리즘, 자료구조 / 2021. 12. 30. / Yoonkie
[프로그래머스] 다리를 지나는 트럭 - 파이썬(Python) / 스택, 큐 다리를 지나는 트럭 문제 설명 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 경과 시간 다리를 지난 트럭 다리를 건너는 트럭 대기 트럭 경과 시간 다리를 지난 트럭 다리를 건너는 트럭 대기 트럭 0 [] [] [7, 4, 5, 6.. Python/프로그래머스 / 2021. 12. 15. / Yoonkie
[프로그래머스] 기능 개발 - 파이썬(Python) / 스택/큐 기능 개발 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100.. Python/프로그래머스 / 2021. 12. 15. / Yoonkie
[프로그래머스] 더 맵게 - 파이썬(Python)/힙 더 맵게 문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. "섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)" Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요. 제한 사항.. Python/프로그래머스 / 2021. 12. 15. / Yoonkie
[Python] 문자열 압축 - 파이썬(Python) 문자열 압축 문제 설명 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 "aabbaccc"의 경우 "2a2ba3c"(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, "abcabcdede"와 같은 문자열은 전혀 압축되지 않습니다. "어피치"는 이러한 단점을 해결하기 위해 문자열을 1개 이상.. Python/프로그래머스 / 2021. 12. 15. / Yoonkie
[Python] 검색 / 이진 검색(Binary search) 이진 검색 이진 검색이란, 정렬된 배열 내에서 지정된 입력값의 위치(key)를 찾습니다. 이진 검색은 입력값과 배열의 중간요소를 비교해서 입력값과 중간요소가 일치한다면 배열의 위치를 반환하고, 입력값이 중간요소보다 작다면 중간 요소의 왼쪽 하위 배열에서 검색 과정을 반복합니다. (정렬된 배열이므로) 큰 경우에는 요소의 오른쪽 하위 요소가 반복합니다. 이진 검색의 예시 [1, 2, 5, 6, 7, 10, 12, 13, 14, 15]라는 정렬된 리스트에서 13이란 값을 찾아보려고 합니다. 첫번째 실행 시작 인덱스 0, 마지막 인덱스 9의 중간값 (0 + 9)//2 는 4이므로 인덱스 4의 값은 7입니다. 13 > 7이므로 리스트의 오른쪽 요소에서 이진 검색을 실행합니다. 두번째 실행 이전 실행에서 중간 인덱.. Python/알고리즘, 자료구조 / 2021. 12. 14. / Yoonkie
1 2 3 4
Category / Manage
>