dfs 6

[백준] 2468번: 안전 영역

https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 최대 안전 지대의 개수를 찾는 문제이다. 어떤 높이일 때 안전 지대가 최대가 되는지 알려주지 않기 때문에 높이 범위(1~100) 안의 모든 높이를 다 대입해서 풀었다. 그런데 모든 주어진 땅의 높이보다 더 높은 높이부터는 다 물에 잠겨 안전지대 개수가 0일 것이므로 break문으로 for문을 빠져나올 수 있도록 했다. 높이를 갱신할 때 마다 visited배열이랑 안전지대 개수를 초기화를 해야 한다! HT..

[백준] 2644번: 촌수계산

https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 몇 번 탐색해야 한 노드(사람)에서 다른 노드까지 도달할 수 있는지를 묻는 것 같다. dfs로 풀었는데, 목표 노드에 도달하면 재귀함수를 빠져나온다. visited 배열에는 몇번째에 해당 노드를 방문했는지를 저장함으로써 방문처리를 했다. HTML 삽입 미리보기할 수 없는 소스 갑자기 backtracking과 dfs의 차이점이 헷갈려서 ChatGPT한테 물어봤다.

[백준] 2606번: 바이러스

https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 한 번에 갈 수 있는 노드의 개수를 어떻게 세야하는지 까먹어서 chat gpt 한테 물어봤는데 이렇게 하는 거였다. 그래프 문제를 하도 안풀다보니 다 까먹은 것 같다ㅋㅋㅠㅠㅠ 그리고 dfs(0) 을 출력했어야 하는데 dfs(1)을 출력해서 계속 틀렸다. 근데 dfs(1)을 출력하는 코드로 게시판에 올려져있는 반례 거의 다 돌려봤는데 다 맞게 나온건 뭐지ㅋㅋㅋㅋ 의문이다.. HTML 삽입 미리보기할 수 ..

[프로그래머스] 혼자 놀기의 달인

https://school.programmers.co.kr/learn/courses/30/lessons/131130 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음에는 말이 길어서 무슨 문제인가 싶었는데, 알고보니 그렇게 어려운 문제는 아니었던 것 같다. 깊이 우선 탐색(dfs)으로 풀었다. 자식노드(cards[n] - 1) 가 목표노드(더 이상 갈 수 있는 자식노드가 없음)일 경우까지 dfs 함수를 재귀호출을 한다. cnt 인자로 dfs를 몇 번째 호출했는지 전달하고, 목표노드일 경우에 목표노드를 호출하기까지 dfs가 호출된 횟수를, 목표노드가 아닐..

[백준] 1987번: 알파벳

https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net 문제가 어렵다기보다는 시간 초과랑 메모리 초과때문에...ㅠㅠㅠ 처음에는 매개변수로 지나온 알파벳들을 문자열 형태로 넘겼었는데 안되길래, 풀이를 봤다. 문자열로 계속 넘기면 낭비니까, visited 배열을 만들어서 이미 탐색한 알파벳은 다시 탐색하지 않도록 하면 되는 것이었다.. 아니 분명 풀이랑 똑같이 썼는데 왜 메모리 초과가 나오나 했는데 setrecursion(10**7) 때문인 것 같..

[백준] 2186번: 문자판

https://www.acmicpc.net/problem/2186 2186번: 문자판 첫째 줄에 N(1 ≤ N ≤ 100), M(1 ≤ M ≤ 100), K(1 ≤ K ≤ 5)가 주어진다. 다음 N개의 줄에는 M개의 알파벳 대문자가 주어지는데, 이는 N×M 크기의 문자판을 나타낸다. 다음 줄에는 1자 이상 80자 이하의 www.acmicpc.net 요즘 계속 BFS 문제만 풀었더니 뇌가 거의 BFS에 절여져 있어서 처음에는 BFS로 풀려고 했다. 그런데 풀다보니까 답이 제대로 안나와서 결국 풀이를 찾아보니까 여러가지 풀이가 있겠지만, DFS로 푸신 분이 계셨다. DFS로 푸는 것이 오랜만이라서 풀이를 읽어보고 이해하는 데만 해도 꽤 오래 걸렸다..😞 굳이 만들어지고 있는 단어? 를 저장할 필요가 없이 풀..