목록알고리즘 (16)
개발스토리
https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B = v: print(day) break else: day += 1 if day_one * (day - 1) + a >= v: print(day) break 성공한 코드 import sys import math a, b, v = map(int, sys.stdin.readline(..
문제 https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 차근차근 기본부터 풀다가 예전에 풀어봤던 문제를 find() 함수를 써서 다시 풀어보았다. ■ 파이썬 문자열 안에서 문자의 위치를 찾는 함수 중 대표적인 것이 find()이다. find() 함수는 찾는 값이 없으면 -1을 리 턴하므로 문제의 취지에 잘 맞았다. ■ 알파벳들을 a,b,c, ... 처럼 입력하는 것이 아니라 미리 파이썬에서 소문자 데이터를 상수로 정의해 놓았기 때문에..
그래프 탐색 ■ 하나의 정점으로부터 시작해서 차례대로 모든 정점들을 한 번씩 방문하는 탐색 과정 EX) 특정 도시에서 다른 도시로 갈 수 있는 지 없는 지에 대한 탐색 과정 DFS(깊이 우선 탐색) ■ root node나 다른 임의의 노드에서 시작하여 다음 branch로 넘어가기 전에 해당 branch를 완벽하게 탐색하는 방법 ■ 넓게 탐색하기전에 깊게 탐색하는 것 ■ DFS가 BFS보다 좀 더 간단함 DFS(깊이 우선 탐색)의 특징 ■ 전위 순회를 포함한 다른 형태의 트리 순회는 모두 DFS의 한 종류이다. ■ 그래프 탐색의 경우 어떤 노드를 방문했었는 지 여부를 반드시 검사해야 한다. ■ DFS는 스택 자료구조(혹은 재귀함수)를 이용하며, 구체적인 동작 과정은 다음과 같다. 1. 탐색 시작 노드를 스..
저번 포스팅에 이어서,,, 최소 비용 신장 트리 찾기 _ 간선 지향 전략 1. 그래프에 남아 있는 가장 가중치가 작은 간선을 선택한다. 2. 선택된 간선이 합쳐진 두 개의 정점들 사이에 있다면 그 간선을 버리고 아니면 최소 비용 신장 트리에 추가. 3. (n-1)개의 간선들이 추가될 때까지 과정 1과 2를 반복한다. 예: 간선 지향 전략_크루스칼 알고리즘 1. 간선들을 가중치에 의해 정렬한다. 2. (a,b)가 가중치가 가장 작으므로 선택하여 T에 추가하고, 정점 a와 b를 합친다. 3. 남은 간선들 중 (d,e)가 가중치가 가장 작으므로 선택하여 T에 추가하고 그래프의 정점 d와 e를 합친다. 4. 남은 간선들 중 (a, e)와 (b, e)가 가중치가 가장 작으므로 임의로 (a, e)를 선택하여 T에 ..