algorithm/Graph Search 16

백준 2661 좋은 수열

https://www.acmicpc.net/problem/2661 2661번: 좋은수열 첫 번째 줄에 1, 2, 3으로만 이루어져 있는 길이가 N인 좋은 수열들 중에서 가장 작은 수를 나타내는 수열만 출력한다. 수열을 이루는 1, 2, 3들 사이에는 빈칸을 두지 않는다. www.acmicpc.net 📌 해결순서 "인접한 두 부분수열"의 의미를 이해하는게 가장 중요한 문제였다. 인접한 이라는 말에 집중하지 않고 이런 풀이 과정을 생각했다. 1. 추가하려는 숫자 앞에 같은 숫자가 있으면 더이상 탐색하지 않고 return 2. 길이가 2부터 현재 길이까지의 부분수열을 만들어서 중복되는 부분수열이 있으면 더이상 탐색하지 않고 return 3. 백트래킹으로 완탐.. 이렇게 생각하고 길이에 맞는 부분수열을 백트래킹..

백준 1759 암호 만들기

https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 📌 해결순서 1. 백트래킹 dfs 완탐으로 암호를 일단 생성한다 2. 모음 갯수가 자음에 비해서 굉장히 적기 때문에, 모음 알파벳으로만 이루어진 배열을 만든다 3. 암호의 길이가 l 과 같은 경우에, 모음 자음의 갯수가 문제의 조건과 일치 하는지 확인한다 4. 암호의 각 단어가 모음인지 자음인지 판단하고 모음 갯수 >= 1 , 자음 갯수 >= 2 인 경우만 출력한다 📌 코드 import sys inpu..

백준 1405 미친 로봇

https://www.acmicpc.net/problem/1405 1405번: 미친 로봇 첫째 줄에 N, 동쪽으로 이동할 확률, 서쪽으로 이동할 확률, 남쪽으로 이동할 확률, 북쪽으로 이동할 확률이 주어진다. N은 14보다 작거나 같은 자연수이고, 모든 확률은 100보다 작거나 같은 자 www.acmicpc.net 📌 해결순서 '4개의 방향중 임의로 하나를 선택한다' 를 읽고 rand 라이브러리를 빌려와서, 좌표를 이동 할때마다 이동방향을 랜덤으로 설정 해줘야하나...? 이렇게 생각했지만 갈수 있는 모든 방향에 대해서 탐색을 진행해야함을 깨닫고 백트래킹 완탐으로 풀어야 겠다고 생각했다 확률값을 출력해야 하므로, (단순한 경로의 수 / 로봇이 이동할수 있는 전체 경로의 수) 를 출력하면 되겠다고 생각을 한..

백준 1182 부분수열의 합

https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 📌 해결순서 모든 부분수열의 합을 구해야 하므로, 완탐으로 구해야함을 알수 있고 더하는 숫자들의 중복이 있으므로 백트래킹으로 하나씩 제거하고 다음 수를 추가해주는 식으로 풀어야한다고 생각했다. 1. 부분수열의 크기가 양수여야 하므로 부분수열을 담는 배열의 길이가 1 이상인 경우에만 합을 구한다 2. 항상 부분수열을 담는 배열에 저장되는 숫자들의 원래 인덱스 값은..

백준 9663 N-queen

https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 📌 해결순서 퀸은 현재 위치에서 상하좌우, 4방향 대각선을 칸의 제한없이 이동할 수 있다. 체스판위의 모든 퀸이 서로를 공격할 수 없게 만들기 위해서는 1. 모든 퀸이 서로 같은 열, 행에 위치하면 안됨 2. 하나의 퀸에 대한 모든 4가지 대각선 방향에 퀸이 위치하면 안됨 만약, 모든퀸이 서로를 공격할 수 없게 만든다면 각 행에 하나의 퀸만 존재하기 때문에, row = [0] * n 인 1차원 배열을 생성해서 배..

백준 10971 외판원 순회 2

https://www.acmicpc.net/problem/10971 10971번: 외판원 순회 2 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j www.acmicpc.net 📌 해결순서 처음에는 각 도시에서 다음 도시로 가는 비용이 가장 싼 경우 + 그 다음도시를 아직 방문하지 않은 경우에 대해서만 탐색을 했는데 틀려서 완탐으로 풀어야 하는 문제겠구나 생각했다 우선, 0번째 도시에서 출발해서 다시 0번째로 돌아오는 순회구조를 트리로 그려보면 이렇다. 0번째 도시에서 출발해서 다시 0번째 도시로 돌아오는 경우는 이렇게 6가지..