DFS
-
프로그래머스) 퍼즐 조각 채우기 (lv.3)알고리즘/프로그래머스 2022. 8. 21. 14:32
https://school.programmers.co.kr/learn/courses/30/lessons/84021?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 탐색을 통해서 도형의 모양을 찾고 보드에 넣을 수 있는 도형의 크기의 합을 구하는 문제이다. 먼저, 보드를 돌면서 맞춰야 하는 퍼즐의 모양을 dfs를 통해 탐색하였다. 여기서 position은 가장 기준의 되는 부분을 (0, 0)으로 잡고 상하좌우 네 방향으로 돌면서 기준점에서 이동하는 방향을 통해 block을 구한다. 보드 안에있는 모든 구멍을 다 구해서 block..
-
백준 14501) 퇴사 (실버.3)알고리즘/백준 2022. 7. 15. 21:26
https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 먼저 문제의 조건을 확인해보자. 1) 직업이 상담사인 사람이 n+1일 째에 퇴사를 한다. 2) 각각의 상담에는 개별의 시간이 걸리기 때문에 다음 상담은 이전 상담이 끝나고 나서 진행할 수 있다. 3) 퇴사날 까지 일을 수행할 때 상담사가 벌 수 있는 최대 이익을 구한다. 먼저 제일 먼저 생각했던 방법은 dfs를 이용해서 상담이 가능한 모든 경우의 수를 구하고 최대 이익을 구하는 방법이었다. 만약 첫번째 상담을 하기로 했으면 그 다음 상담이 가능한 경우는 첫번째 상담일 수가 지난 후일 것이기 때문에 범위는 range(idx, n)으로 ..
-
백준 14889) 스타트와 링크 (실버.2)알고리즘/백준 2022. 7. 14. 21:59
https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 문제의 조건은 다음과 같다. 1) 총 사람수는 짝수로 이루어져 있다. 2) 팀원수는 각각 n/2명이 된다 3) 팀원 각각의 쌍의 능력치를 더한 값이 팀이 능력치가 된다 4) 팀별로 능력치가 가장 작을 때의 차이 출력 가장 먼저 생각한 것은 팀원의 조합을 이용하여 모든 팀이 생성되는 경우의 수를 구하고 각각의 팀점수를 구해서 차이의 최솟값을 찾는 해법을 생각했다. from itertools import combinati..
-
이것이 코딩테스트다 - 5) DFS/BFS알고리즘 2021. 1. 22. 19:33
DFS : (재귀용법을 이용해서) 모든 노드를 방문할 때 - (stack) BFS : 두개의 노드를 최단거리로 방문할 때 (최단거리 구하기 문제) - (가까운 노드부터 방문한다, queue) 5.1) 음료수 얼려먹기 #include #include #include #include #include #include using namespace std; int n, m; int Ice[1000][1000]; bool dfs(int x, int y) { if (x = n || y = m)//범위내 충족하는지 확인 { return false; } if (Ice[x][y] == 0)//갈수 있는 공간이라면 { Ice[x][y] = 1;//방문표시 남기고 dfs(x + 1, y);//상하좌우 방문 dfs(x - 1,..