본문 바로가기
  • 문과생의 백엔드 개발자 성장기

|Algorithm8

3주차 BFS (너비 우선 탐색) / DFS (깊이 우선 탐색) BFS/DFS BFS (Breadth First Search) : 너비 우선 탐색, (queue와 많이쓰임) 하나의 경우의 수에 대한 다음 단계의 모든 경우의 수를 조사하면서 해를 찾는 과정 말 그대로 시작 정점으로부터 가까운 정점을 먼저 방문하고, 멀리 떨어져 있는 정점을 나중에 방문하는 순회방법 두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 많이 사용 ✔ 예제 : 최단 경로 찾기 1번 섬에서부터 12번 섬까지 가는 최단 경로는 얼마인가? (단, 모든 경로의 거리는 1이다) while len(queue) > 0: # queue에 데이터가 있다면 count = len(queue) # 같은 거리에 있는 큐 데이터 갯수 for time in range(count): now = queue.pop.. 2021. 6. 11.
[2주차]프로그래머스 Lv2 소수찾기(완전탐색) . PYTHON 문제 설명 한 자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 입출력 예 numbers return "17" 3 "011" 2 입출력 예 설명 예제 #1 [1, 7]으로는 소수 [7, 17, 71]를 만들 수 있습니다. 예제 #2 [0, 1, 1]으로는 소수 [11,.. 2021. 6. 9.
[2주차]_프로그래머스 Lv1 수포자(완전탐색) . PYTHON 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요... 2021. 6. 2.
2주차 완전탐색/이분탐색 완전 탐색/이분 탐색 😎 탐색(검색)이란? : 많은 데이터 속에서 원하는 데이터를 찾는 것으로 웹에서 특정 문자를 가진 웹 문서를 찾거나, 신용카드나 버스카드 역시 검색 알고리즘을 사용한다. 탐색의 종류 : 완전 탐색, 이분 탐색, 깊이 우선 탐색, 너비 우선 탐색, 문자열 탐색, KMP, BM 완전 탐색 : 브루트 포스(Brute Force)라고도 불리며 컴퓨터의 빠른 계산 성능을 활용하여 가능한 모든 경우의 수를 탐색하는 방법 결과 값이 가장 확실하지만 그만큼 시간이 가장 오래 걸리는 탐색방법 즉, 효율성 관점에서 최악의 방법 ✔ 완전 탐색 구현 방법 □ 반복문 def solution(trump): for i in range(len(trump)): if trump[i] == 8: return i re.. 2021. 6. 1.
[1주차]_프로그래머스 Lv2 다리를 지나는 트럭(스택/큐) . PYTHON 다리를 지나는 트럭 문제 설명 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다. ※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다. 예를 들어, 길이가 2이고 10kg 무게를 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 경과 시간 다리를 지난 트럭 다리를 건너는 트럭 대기 트럭 0 [] [] [7,4,5,6] 1~2 [] [7] [4,5,6] 3 [7] [4] [5,6] 4 .. 2021. 5. 23.
[1주차]_프로그래머스 Lv2 기능개발(스택/큐) . PYTHON 기능개발 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 .. 2021. 5. 22.
[1주차]_프로그래머스 Lv2 주식가격(스택/큐).PYTHON 주식가격 문제 설명 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. prices의 길이는 2 이상 100,000 이하입니다. 입출력 예 prices return [1, 2, 3, 2, 3] [4, 3, 1, 1, 0] 입출력 예 설명 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다. 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다. 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다. 5초 시점.. 2021. 5. 22.
1주차 스택/큐 스택/큐 😎 스택 (Stack - 쌓다) 프로그래밍에서 목록 혹은 리스트에서 접근이 한 쪽에서만 가능한 구조 LIFO(Last-In, First-Out) 가 기본원리 내장함수 : push, peek, pop 스택 자료구조 : 책을 쌓는 것처럼 차곡차곡 쌓아 올린 형태의 자료구조를 말함 books = [book1, book2, book3] + [book4] ← push books = [book1, book2, book3, book4] ← 마지막 삽입을 확인 peek books = [book1, book2, book3] / [book4] ← 마지막 삽입한 것을 삭제 pop 즉, 스택에서 삽입하는 연산을 push , 삽입한 것을 확인하는 연산 peek , 삭제하는 연산을 pop 이라고 한다. 스택은 시간 순서.. 2021. 5. 19.