목록DFS (62)
어흥
문제 링크: www.acmicpc.net/problem/1937 1937번: 욕심쟁이 판다 n*n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에서 www.acmicpc.net 1. 주의할 점 - 메모아이징 기법을 이용한다 - 값을 저장해서 사용하는 형태로 한다 2. 구현 - 모든 수를 입력 받고, Check[][] 배열에는 현재 지점에서 시작하여 살 수 있는 최대 일수를 저장한다 - 만약 Check[][] 값이 0이라면 DFS()를 수행한다 - DFS(y,x) 함수에는 이미 해당 Check[y][x] 값이 양수라면 해당 값을 반환한다. 0이라면, 현재 위치를 기..
문제링크: www.acmicpc.net/problem/14725 14725번: 개미굴 첫 번째 줄은 로봇 개미가 각 층을 따라 내려오면서 알게 된 먹이의 정보 개수 N개가 주어진다. (1 ≤ N ≤ 1000) 두 번째 줄부터 N+1 번째 줄까지, 각 줄의 시작은 로봇 개미 한마리가 보내준 먹이 www.acmicpc.net 1. 주의할 점 - 트리나 트라이에 대해서 알고 있어야 한다 - 사전순으로 출력해야한다(정렬된 무엇인가를 사용) 2. 구현 - Node 구조체를 만들어서 해당 Node의 Map을 생성하고, insert()와 print()의 기능을 하는 함수를 생성한다 - Node구조체 형태인 Root 노드를 처음에 만든다 - Insert() 함수는 입력받은 길을 저장하고 있는 V 벡터와 현재 개미굴의 ..
문제 링크: www.acmicpc.net/problem/6443 6443번: 애너그램 N개의 영단어에 대한 모든 가능한 애너그램을 출력한다. 각각의 영단어에 대한 애너그램을 출력할 때, 알파벳 순서로 중복되지 않게 출력한다. www.acmicpc.net 1. 주의할 점 - 문자열의 길이가 최대 몇인지 모른다 -> 배열을 이용해서 풀기 애매하다 - 문자열의 길이가 최대 몇인지 모르므로 Set을 사용하기 애매하다 -> TLE나 메모리초과가 날 수도 있다 2. 구현 - 그리디를 통해 접근한다 - 문자열을 입력받을 때, Sort 작업 수행과 Len을 설정한다 - DFS() 함수를 통해 idx가 문자열 길이-1일때 문자열을 출력한다 - For문을 통해 현재 바꾸려고 하는 위치의 문자와 다른 문자가 같은 숫자라면 ..
문제 링크: https://www.acmicpc.net/problem/15681 15681번: 트리와 쿼리 트리의 정점의 수 N과 루트의 번호 R, 쿼리의 수 Q가 주어진다. (2 ≤ N ≤ 105, 1 ≤ R ≤ N, 1 ≤ Q ≤ 105) 이어 N-1줄에 걸쳐, U V의 형태로 트리에 속한 간선의 정보가 주어진다. (1 ≤ U, V ≤ N, U ≠ V) �� www.acmicpc.net 1. 주의할 점 - DFS +DP를 이용하여 메모아이징을 사용해야 한다 2. 구현 - 모든 간선들의 정보를 V[] 배열에 담는다 - 입력 받은 Root를 기준으로 DFS()를 수행하며 메모아이징을 이용해서 해결한다. 또한, Visit[] 배열을 사용하여 해당 Node의 부모를 세지 않도록 한다 #include #inc..
문제 링크: https://www.acmicpc.net/problem/6416 6416번: 트리인가? 문제 트리는 굉장히 잘 알려진 자료 구조이다. 트리를 만족하는 자료 구조는 비어 있거나(노드의 개수가 0개), 노드의 개수가 1개 이상이고 방향 간선이 존재하며 다음과 같은 조건을 만족해야 �� www.acmicpc.net 1. 주의할 점 - 매 TC마다 Case를 1씩 증가시킨다 - 매 TC마다 벡터와 배열들을 초기화한다 - Root가 2개 이상 있는지, 없는지, 부모가 2개 이상인지, Root에서 모든 Node까지 도달 가능하지 전부 확인한다 - 0 0 또한 빈 트리로, 트리라고 출력해야 한다 2. 구현 - 입력받는 모든 Node들을 Set에 넣으며, 간선의 정보는 V[부모]에 자식에 대한 정보를 넣..
문제 링크: https://www.acmicpc.net/problem/3671 3671번: 산업 스파이의 편지 문제 안녕하세요. 저는 산업 스파이입니다. 저의 정체를 절대 다른 사람에게 말하지 말아주세요. 저의 가장 최근 일은 유명한 수학 연구소의 최신 연구 결과를 훔쳐오는 것이었습니다. 저는 매�� www.acmicpc.net 1. 주의할 점 - 소수인 수를 미리 구해놓는다 - 매 TC마다 벡터들을 초기화한다 2. 구현 - 에라토스테네스의 체를 이용하여 소수면 Num[] 배열 자기자신을 입력한다 - 1~입력받은 수의 자리수 까지 DFS를 수행하며 구한 수가 소수라면 Set에 넣는다 #define MAX 10000000 #include #include #include #include #include #i..
문제 링크: https://www.acmicpc.net/problem/12886 12886번: 돌 그룹 오늘 강호는 돌을 이용해 재미있는 게임을 하려고 한다. 먼저, 돌 세개는 그룹으로 나누어져 있으며 각각의 그룹에는 돌이 A, B, C개가 있다. 강호는 모든 그룹에 있는 돌의 개수를 같게 만들려고 www.acmicpc.net 1. 주의할 점 - BFS, DFS 2가지 방법으로 모두 풀이가 가능하다 - 단계별로 진행했을 때, 현재 돌의 값들이 이전에 나왔는지 검사하는 과정이 필요하다 - 입력 받을 때, 돌의 총합이 3으로 나눠떨어지지 않으면 바로 0을 출력한다 2. 구현 - 입력받는 돌들의 값을 지역변수 벡터 V에 저장하고 DFS를 수행한다 - DFS() 함수를 수행하면서 각 원소의 값이 모두 같다면 A..
문제 링크: https://www.acmicpc.net/problem/17825 17825번: 주사위 윷놀이 첫째 줄에 주사위에서 나올 수 10개가 순서대로 주어진다. www.acmicpc.net 1. 주의할 점 - 이동하려는 칸에 다른 플레이어의 말이 있으면 그 판은 무효로 한다 - 1번이 10번 다 이동하는거랑 2~4번이 10번 다 이동하는것은 같다. 이것을 따로 처리해주자(스터디원 曰: 실제 시험에서는 이거 처리 안하면 TLE로 통과 못했다고 한다) - 윷놀이 점수판을 따로 배열로 만든다 2. 구현 - 주사위의 정보를 입력받고 DFS()를 수행하며 어떤 플레이어가 움직일건지 정한다 - DFS()를 수행하면서 위의 빨간글씨 조건을 처리하기 위해 For문에선 i: 0~Min(cnt+1,4)로 설정했다...