📊알고리즘, 문제풀이/📈문제풀이 (PS) 136

[알고리즘][Python] 백준 1260 DFS와 BFS 문제 풀이

문제 출처 :www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 해석 : 큐와 스택을 이용해서 방문하는 노드를 순서대로 출력하는 문제이다. 기본적인 조회이므로 자신이 원하는 구조로 자료를 정리한 다음 방문처리 해주면 된다. 문제 풀이 : 각각 노드에서 이동가능한 노드를 표시하는 graph를 선언하고 방문 된 적이 있는지 체크하는 visited 를 이용해서 방문 처리를 실행한다. 여기서 주의할 점은 낮은 번호 순서로 방문..

[알고리즘][Python] 백준 1107 리모컨 문제 풀이

문제 출처 : www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 문제 해석 : 고장 리모컨을 가지고 최소 횟수로 원하는 채널로 이동하는 문제이다. 즉 가능한 모든 경우를 계산해서 가장 적게 버튼을 누를 수 있도록 설계해야한다. 문제 풀이 : 이 문제는 가능한 모든 경우를 고려해서 문제를 풀어야 하기 때문에 브루트포스 문제이다. 1. 만들 수 있는 모든 버튼을 만들면서 불가능한 경우를 체크한다. 2. 가능한 경우의 몇번 버튼을 눌러야하는지 계산한..

[알고리즘][Python] 백준 15686 치킨 배달 문제 풀이

문제 출처 :www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 문제 해석 : 치킨 거리는 가장 가까운 치킨 집까지의 거리를 의미합니다. 이 문제에서는 도시 전체의 치킨 거리를 최소가 되게 하면서 치킨 집을 일정 숫자만큼 폐업 시켜야합니다. 문제 풀이 : 구현 문제 입니다. 가능한 모든 경우를 고려하여 치킨 집을 정해진 갯수만큼 배치하고 거리를 계산하여 최솟값을 찾아야합니다. 풀이 코드 from itertools import combinat..

[알고리즘][Python] 백준 3190 뱀 문제 풀이

문제 출처 : www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 문제 해석 : 뱀이 사과를 먹으면 몸의 길이가 늘어나며 경로를 따라 움직입니다. 자신의 몸이나 벽에 부딪히면 게임이 끝나며 이때 시간을 출력합니다. 문제 풀이 : 구현 문제로서 문제에서 제시하는 조건들을 모두 만족시키게 차근차근 풀이를 진행하면 풀 수 있습니다. 풀이 코드 N = int(input()) K = int(input()) board = [[0] * N for _ in range(N)] for ..

[알고리즘][Python] 백준 1439 뒤집기 문제 풀이

문제 출처 : www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 문제 풀이를 위한 아이디어 1. 0과 1 중 연속된 문자열의 갯수가 적을 것을 찾는다. -> ex) 0011001 과 같은 Input은 "00" , "11", "00", "1" 처럼 구역을 나눌 수 있고 0 구역은 2번 1 구역도 2번이기 때문에 행동의 최소 횟수는 2번입니다. S = list(input()) A = [] B = [] k = S.pop(0) while S: temp = S.pop(..