DFS 4

[백준/파이썬] 15651번 N과 M(3)

https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net import sys read = sys.stdin.readline def dfs(): if len(s) == m: print(' '.join(map(str,s))) return for i in range(1, n+1): s.append(i) dfs() s.pop() n, m = map(int, read().split()) s = [] dfs() 중복도 허용되므로 visited 관련된 코드를 제거..

Algorithm/Problems 2023.02.01

[백준/파이썬] 15650번 N과 M (2)

https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net import sys read = sys.stdin.readline def dfs(): if (len(s) == m) and s == sorted(s): print(' '.join(map(str,s))) return for i in range(1, n+1): if visited[i]: continue visited[i] = True s.append(i) dfs() s.pop() visited[i]..

Algorithm/Problems 2023.02.01

[백준/파이썬] 15649번 N과 M (1)

https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net import sys read = sys.stdin.readline def dfs(): if len(s) == m: print(' '.join(map(str,s))) return for i in range(1, n+1): if visited[i]: continue visited[i] = True s.append(i) dfs() s.pop() visited[i] = False n, m = map(i..

Algorithm/Problems 2023.02.01

[프로그래머스] 타겟 넘버 (DFS/BFS)

코딩테스트 공부하기로 마음먹고 처음 풀어본 문제다. 하지만.. 결과는 처.참.했.다. 검색을 해보니 DFS/BFS 문제로 푼다고 한다. 둘 중 스택을 이용한 DFS로 풀이 하는 것으로 이해했고 풀이했다. 문제 2번째 예시인 numbers가 [4,1,2,1] 인 경우를 생각해봤다. def solution(numbers, target): answer = 0 n = len(numbers) # temp, idx 값을 의미 stack = [[numbers[0], 0], [-1*numbers[0], 0]] while stack: temp, idx = stack.pop() idx += 1 if idx < n: stack.append([temp+numbers[idx], idx]) stack.append([temp-nu..

Algorithm/Problems 2022.08.02