백트래킹(2)
-
[백트래킹, 백준] N과 M (1), (2) <중복을 허용하지 않는 순열, 조합>
N과 M - 1, 2의 차이 1번에서는 중복을 허용하지 않는 순열, 2번에서는 조합을 뽑는 문제이다. 1번에서는 단순히, 중복에 대해 체크하는 1차원 리스트를 만들어 플래그로 활용하면서, 재귀적으로 호출하면 쉽게 해결할 수 있다. n, m = map(int, input().split()) arr = [i + 1 for i in range(n)] selected = [False] * n result = [] def permutation(m): if m == 0 : print(*result) return for idx in range(n): if not selected[idx] : selected[idx] = True result.append(arr[idx]) permutation(m - 1) result...
2023.09.03 -
[백트래킹, 코드트리] 아름다운 수
내 코드 - 일부 케이스를 잡아내지 못했음. n = int(input()) # 1 ~ 4 의 수로, 그 중 연달아 같은 수가 나오는 숫자 - 아름다운 수 # 동일한 숫자에 대해 정확히 해당 숫자만큼 연달아 같은 묶음 (111 : 1이 1번 - 3번 / 222222222 : 2가 2번이 4번) # 1 이 1번, 2가 2번, 3이 3번 (단일 연속) # 222의 경우 22 / 21 이라서 아름다운 수가 아님...! (2가 3번 나오면 안되고, 정확히 2번 나와야 함으로 인지) # out : n자리의 아름다운 수가 몇 개인지 ? # Step 1 : n 자리의 1 ~ 4로 꾸려진 수를 먼저 출력해야 함. # Step 2 : 각 수들에 대한 아름다운 수 여부를 검사 answer = [] beautiful_num_..
2023.08.15