본문 바로가기

전체 글250

(알고리즘)DFS(Depth-First-Search) 깊이 우선 탐색 - 파이썬 DFS 1. DFS동작 예시 DFS(Depth-First-Search)는 말 그대로 깊은 곳에 있는 노드를 탐색하는 방법이다. DFS는 재귀함수를 사용하여 깊이 있는노드를 탐색한다. *재귀함수는 스택과 유사하다. 집어 넣은 순서대로 1->2->4->8->5->3->6->7 2. DFS코드 예제(python) import graphlib graph=[ [], #노드가 1부터 시작하므로 비움. [2,5,3], #1과 인접한 노드 [1,4,8], #2와 인접한 노드 [1,6,7], #3과 인접한 노드 [2], #4와 인접한 노드 [1,8], #5와 인접한 노드 [3,7], #6과 인접한 노드 [3,6], #7과 인접한 노드 [2,5] #8과 인접한 노드 ] visited = [False]*len(graph) .. 2021. 6. 11.
(알고리즘)BFS(Breadth-First-Search) 너비 우선 탐색 - 파이썬 + 백준 2178 풀이 BFS 1. BFS동작 예시 - 가까운 노드부터 우선적으로 탐색하는 알고리즘 - BFS는 큐를 사용하여 너비 우선으로 탐색한다. 집어 넣은 순서대로 1 -> 2 -> 3 -> 5 -> 4 -> 8 -> 6 -> 7 2. BFS 코드 예시 from collections import deque #queue를 사용하기 위해 쓰임 리스트를 사용해도 되지만, #deque이 시간을 더 단축해줌. def bfs(graph, start, visited): queue = deque([start]) #처음 정점을 넣어줌 visited[start] = True while queue: v = queue.popleft() print(v, end=' ') # 한 줄로 출력 for i in graph[v]: #만약 v=1일때 i는.. 2021. 6. 10.
파이썬 - 리스트 중복 제거하기(다양한 방법) + 예제 파이썬 리스트 중복제거 문제를 풀고나서 어떤 방법이 활용됐는지 더보기를 눌러 확인 하세요. 더보기 1. set함수 ex) arr = [1, 1, 3, 5, 5, 6] print(set(arr)) # {1, 3, 5, 6} 2.딕셔너리 ex) arr = [1, 1, 3, 5, 5, 6] dic = {arr[i]:i for i in range (len(arr))} for key in dic.keys: print(key, end=' ') # 1 3 5 6 예제1 (쉬움) 문제 리스트의 중복을 제거해주는 프로그램을 만들어라. 입력 첫째줄에는 리스트 원소들이 주어지며, 각 원소마다 한 칸의 공백이 있다. 출력 첫 째줄에 중복이 제거된 리스트 원소들이 출력된다. 원소들의 순서는 제일 작은 것부터 출력한다 예제 입력.. 2021. 6. 9.
코딩테스트 준비 - 백준15649번 N과 M (1)풀이-DFS에 관해서(파이썬) 백준 15649번 풀이 문제풀러가기 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 풀이 DFS알고리즘을 통해 푸는 문제이다. (DFS말고 다른 방법이 있다면 알려주세용 ㅠ_ㅠ) 코드 import sys N, M = map(int, sys.stdin.readline().split()) arr = [i for i in range(1,N+1)] check = [False]*len(arr) a = [] def dfs(x): if x == M:.. 2021. 6. 8.
코딩테스트 준비 - 백준18870번 좌표압축 풀이:파이썬 딕셔너리 활용 (파이썬) 백준 18870번 풀이 문제풀러가기 https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 문제 풀이 1. 문제 해설 "Xi>Xj를 만족하는 서로 다른 좌표의 개수와 같아야된다" 라는 뜻은 즉 Xi가 리스트 안에서의 크기 순서를 출력하면 된다는 말입니다. (크기 순서는 0부터 시작.) 더보기 예를 들면 arr=[ 1,0,5,2,1] 라고 하면, 여기서 arr[0], 즉 1로 예를 들면, arr 리스트 .. 2021. 6. 7.