본문 바로가기

알고리즘7

(백준) 18352번: 특정 거리의 도시 찾기 - 파이썬 풀이 (BFS, 그래프) 1. 문제풀러가기 2. 문제 해결 코드 3. 로직 분석 1. 문제풀러가기 https://www.acmicpc.net/problem/18352 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net 문제 요약: - X(시작지점)도시 부터 K만큼 이동해서 갈 수 있는 도시 출력. - 중요포인트 : 오름차순 정렬! 예) N=4, M=4, K=2, X=1일 때 도시는 1~4까지 있음 => N=4 주어진 도로의 개수는 4개 => M=4 최단 거리가 2 이.. 2022. 11. 23.
(백준) 6148번: Bookshelf 2 파이썬 풀이 1. 문제풀러가기 2. 문제 해결 코드 3. 로직 분석 1. 문제풀러가기 https://www.acmicpc.net/problem/6148 6148번: Bookshelf 2 Here we use cows 1, 3, 4, and 5, for a total height of 3 + 3 + 5 + 6 = 17. It is not possible to obtain a total height of 16, so the answer is 1. www.acmicpc.net 문제 해석: - 소를 쌓아서 책꽂이 높이보다 크거나 같게 만들기. - 쌓은 소의 높이와 책꽂이 높이의 최소 차를 구하기 => min(쌓은 소의 높이 - 책꽂이 높이 ) 2. 문제 해결 코드 코드 (성공) import sys from itertools.. 2022. 11. 22.
(백준) 9625번: BABBA 파이썬 풀이(DP풀이) 1. 문제풀러가기 2. 문제 해결 코드 3. 로직 분석 1. 문제풀러가기 https://www.acmicpc.net/problem/9625 9625번: BABBA 상근이는 길을 걷다가 신기한 기계를 발견했다. 기계는 매우 매우 큰 화면과 버튼 하나로 이루어져 있다. 기계를 발견했을 때, 화면에는 A만 표시되어져 있었다. 버튼을 누르니 글자가 B로 변했 www.acmicpc.net 문제 해석: - A => B로 바뀜, B => BA로 바뀜 - 처음에 A가 출력되어있는 상태에서 시작 예) 0번 눌렀을때 => 결과 : A 1번 눌렀을때 =>A가 B로 바뀌므로 => 결과 : B 2번 눌렀을때 =>B가 BA로 바뀌므로 => 결과 : BA 3번 눌렀을때 => B는 BA로, A는 B로 바뀌므로 => 결과 : BAB .. 2022. 11. 21.
(알고리즘)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.
코딩테스트 준비 - 백준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.
코딩테스트 준비 - 백준10989번 정렬3 풀이 (파이썬) 백준 10989번 풀이 문제풀러가기 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 1. 시간과 메모리 제한 유의 2.주어진 문제에서 제한한 메모리가 매우 낮다.그러므로 pypy3보다 python3로 사용할 것. (pypy3보다 python3가 시간상 더 빠르게 동작, 하지만 메모리 사용량이 python3 보다 많음 ) 3. N의 범위가 정해져 있다. 1~10000까지 코드 - 시간 초과 코드:실패 import sys N = int(sys.stdin.rea.. 2021. 5. 31.