본문 바로가기

분류 전체보기227

(알고리즘)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.
코딩테스트 준비 - 백준10814번 나이순 정렬 풀이:파이썬 람다 리스트 정렬 (파이썬) 백준 10814번 풀이 문제풀러가기 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 문제 풀이 1. 나이는 int 형으로 출력!! *나이를 str로 출력하면 아무리 맞았어도 틀렸습니다가 뜹니다. 2. 리스트 정렬 sort사용 or lambda 사용 코드 1 import sys N=int(sys.stdin.readline()) arr=[] for i in range (N): a,b = map(str,sys.stdin.readline().split()).. 2021. 6. 6.