backtracking 5

[백준] 1182번: 부분수열의 합

https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 백트래킹이 너무 싫다... 아직도 제대로 이해를 못한 것 같다. 실버2 문제인데도 스스로 못풀다니....... 코딩 어렵다..😭 부분집합 배운지 6년이나 지나서 부분 수열의 합이라는걸 대체 어떻게 구해야 하는지 잠시 헷갈렸다. 부분집합의 각 원소들을 선택하거나 선택하지 않는 경우를 나눠서 세면 좀 쉬워지는 것 같다., HTML 삽입 미리보기할 수 없는 소스 참고..

[백준] 1987번: 알파벳

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

[백준] 2580번: 스도쿠

https://www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 처음에는 이렇게 풀었었는데, 문제에 제시된 테스트 케이스만 통과했어서, 결국 풀이를 찾아봤다. import sys from collections import deque input = sys.stdin.readline def backtracking(y, x): # 좌표 if matrix[y][x] != 0: return for i in range(1, 10): endflag = True # 가로줄,..

[백준] 1759번: 암호 만들기

https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 처음에는 부르트포스 방법처럼 하나씩 다 대입해서 풀려고 했는데, 이렇게 하다가는 답이 안나올 것 같아서 풀이를 찾아봤다. 입력을 받은 후 정렬한 후 가능한 모든 조합을 재귀함수로 만든 다음, 조건에 맞는 경우 출력하면 되는 것 같다. 근데 스스로 못 풀 것 같다😢 HTML 삽입 미리보기할 수 없는 소스 참고 1759번 풀이: https://fre2-dom.tistory.com/454