728x90
반응형

Algorithm Problems 125

[백준] [Python] 15654번 N과 M (5) - 백트래킹

www.acmicpc.net/problem/15654 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net Python import sys n, m = map(int, sys.stdin.readline().split()) arr = list(map(int, sys.stdin.readline().split())) visit = [] arr.sort() def back(k): if len(visit)==m: for x in visit: print(x,end=" ") print() return for i in r..

Algorithm Problems 2021.05.09

[백준] [Python] 11866번 요세푸스 문제 0 - 큐

www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net Python from collections import deque n,m = map(int, input().split()) q = deque() for i in range(m, n+1): q.append(i) for i in range(1, m): q.append(i) print('') print() 문자열이 귀찮아 보일 때는 모든 값을 리스트에 저장한 후 join()과 formatting을 쓰자 깔끔한 코드 출처: it-garden.tistory.com/285 from collections i..

Algorithm Problems 2021.05.08

[백준] [Python] 1182번 부분수열의 합 - 백트래킹 - [대표예제]

www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net Python import sys input = sys.stdin.readline n, s = map(int, input().split()) arr = list(map(int, input().split())) cnt = 0 def back(num, total): global cnt if num == n: if total == s: cnt += 1 return # 해당 숫자를 b..

Algorithm Problems 2021.05.07

[백준] [Python] N-Queen - 백트래킹 - [대표예제]

www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net Python n = int(input()) cnt = 0 def nqueen(k, board, y): global cnt if k==n: cnt+=1 return for i in y: valid = 1 #True for idx, t in enumerate(board): #board가 비어있으면 실행X if t+k-idx == i or t-k+idx==i: valid = 0 #False break if valid: idx = y..

Algorithm Problems 2021.05.06

[백준] [Python] N과 M (4) - 백트래킹

www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net Python n, m = map(int, input().split()) arr = [0]*(n+1) result = [] def backtracking(level, k): if (k == m): result.append(arr[:m]) return for i in range(level,n+1): arr[k] = i backtracking(i, k+1) #print(level, i, k, arr) backtra..

Algorithm Problems 2021.05.06

[백준] [Python] N과 M (3) - 백트래킹

www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net Python n, m = map(int, input().split()) arr = [0]*(n+1) #visit = [0]*(n+1) result = [] def backtracking(k): if (k == m): result.append(arr[:m]) return for i in range(1, n+1): #if visit[i] == 0: arr[k] = i # visit[i] = 1 # print(vi..

Algorithm Problems 2021.05.06

[백준] [Python] N과 M(2) - 백트래킹

www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net Python n, m = map(int, input().split()) arr = [0]*(n+1) visit = [0]*(m) result = [] def backtracking(k): if (k == m): x = arr[:m] x.sort() if x not in result: result.append(x) return for i in range(1, n+1): if visit[i] == 0: arr[k..

Algorithm Problems 2021.05.06

[백준] [Python] 17478번 재귀함수가 뭔가요?

www.acmicpc.net/problem/17478 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net Python t = int(input()) print("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.") def what(n): bar = 4*n*"_" print(bar+"\"재귀함수가 뭔가요?\"") if n==t: print(bar+"\"재귀함수는 자기 자신을 호출하는 함수라네\"") print(bar+"라고 답변하였지.") return print(bar+"\"잘 들어보게. 옛날옛날 한 산..

Algorithm Problems 2021.05.04

[백준] [Python] 2583번 영역 구하기 - BFS

www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net Python import sys from collections import deque m,n,k = map(int,sys.stdin.readline().split()) paper = [[0 for _ in range(m)] for _ in range(n)] visit = [[0 for _ in range(m)] for _ in range(n)] for _ in range(k): x1,y1,x..

Algorithm Problems 2021.05.04

[백준] [Python] 7569번 토마토(3차원) - BFS

www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net Python import sys from collections import deque m, n, h = map(int, sys.stdin.readline().split()) visit = [[[0]*m for _ in range(n)] for _ in range(h)] tomato = [[list(map(int, sys.stdin.readline().split())) for _ in ra..

Algorithm Problems 2021.05.03
728x90
반응형