Algorithm 17

[Algorithm/Python] DFS(Depth First Search) / BFS(Breadth First Search) 구현 정리(1)

대표적인 탐색 알고리즘인 DFS와 BFS는 스택과 큐, 재귀 함수를 이용하여 정리할 수 있다. DFS(Depth First Search)DFS는 깊이 우선 탐색이라고 부르며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. 그래프는 다음과 같이 두 방식으로 쓰일 수 있다.1. 인접 행렬 방식INF = 999999999 #무한의 비용 선언# 2차원 리스트를 이용해 인접 행렬 표현graph = [ [0, 7, 5], [7, 0, INF], [5, INF, 0]]print(graph)# [[0, 7, 5], [7, 0, 999999999], [5, 999999999, 0]]2. 인접 리스트 방식# 행(Row)이 3개인 2차원 리스트로 인접 리스트 표현graph = [[] for _ in r..

[Algorithm/Python] 이진 탐색 트리 순회 방법(전위 / 중위 / 후위 순회)

트리 이진 탐색배열 내부의 데이터가 정렬되어 있을 때 사용할 수 있는 알고리즘.탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 특징이 있다. 이진 탐색을 할때는 시작점, 끝점, 중간점 3개의 변수를 사용한다.# 이진탐색소스코드 구현(재귀함수)def binary_search(array, target, start, end): if start > end: return None mid = (start + end) // 2 # 찾은 경우 중간점 인덱스 반환 if array[mid] == target: return mid # 중간점의 값보다 찾고자 하는 값이 작은 경우 왼쪽 확인 elif array[mid] > target: return binary_search(array, target, sta..

[프로그래머스 1단계] 크기가 작은 부분 문자열

https://school.programmers.co.kr/learn/courses/30/lessons/147355 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr def solution(t, p): answer = 0 subStr = [t[i: i+len(p)] for i in range(0, len(t)-len(p)+1)] for j in subStr : if(int(j)  파이썬 슬라이스와 List Comprehensions를 활용하였다.List Comprehensions을 사용하니 코드가 간결하다.

[프로그래머스 1단계] 카드 뭉치

https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr def solution(cards1, cards2, goal): answer = '' inCards1Count = 0 inCards2Count = 0 subGoal = [] for i in range(0, len(goal)): if(goal[i] in cards1) : subGoal.append(cards1[inCards1Count]) ..

[프로그래머스 1단계] 가장 가까운 글자

https://school.programmers.co.kr/learn/courses/30/lessons/142086 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr def solution(s): answer = [] checkArr = '' for i in s : if i in checkArr : a = checkArr.rfind(i); checkArr += i; b = checkArr.rfind(i); num = b - a;..

[프로그래머스 1단계] 푸드 파이트 대회

https://school.programmers.co.kr/learn/courses/30/lessons/134240 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr def solution(food): answer = '' subAnswer = '' for i in range(1, len(food)) : eatingCount = food[i] // 2; if(eatingCount > 0): answer += str(i) * eatingCount subAnswer += str(i) *..

[프로그래머스 1단계] - 추억 점수

https://school.programmers.co.kr/learn/courses/30/lessons/176963 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr def solution(name, yearning, photo): answer = [] for i in photo : sum = 0 for j in i : if j in name : valueIndex = name.index(j); sum += yearning[valueIndex]; ..