백준 153

[백준] N과 M (시리즈)

www.acmicpc.net/workbook/view/2052 문제집: N과 M (시리즈) www.acmicpc.net 백트래킹을 연습하기 위해 4번까지 풀었다. 15649 n, m = map(int, input().split()) visited = [0] * (n + 1) def asdf(index=0, arr=[], key=m, end=n): if index == key: print(' '.join(map(str, arr))) else: for i in range(1,end+1): if visited[i] == 0: visited[i] = 1 asdf(index + 1, arr + [i]) visited[i] = 0 asdf() 15650 n, m = map(int, input().split()) d..

STUDY/Algorithm 2021.03.04

[백준] 2798 블랙잭

www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net n, m = map(int, input().split()) cards = list(map(int, input().split())) max_val = 0 def blackjack(index=0, visit_index=-1, arr=[], length=n, key=m): if index == 3: if sum(arr) > key: return global max_val if max_..

STUDY/Algorithm 2021.03.04

[백준] 2309 일곱 난쟁이

https://acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net dwarf = [int(input()) for _ in range(9)] visited = [0] * 9 real_dwarf = [] def backtrack(index, total, vis_idx, arr, visit): if index == 7 and total == 100: real_dwarf.append([dwarf[i] for i in range(9) if visit[i]]) return elif ind..

STUDY/Algorithm 2021.03.04

[백준] 7569 토마토

www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 이번엔 3차원배열이다. 2차원 배열에서 z축이 하나 더 생겼지만, 6개만 확인하면 되는 문제이므로 난이도가 확 올라가진 않는다. 여러번 시도했으나 지난 토마토 문제와 같이 시간초과가 떴다. 그래서 pypy로 확인해 보니 정답. 알고리즘엔 문제가 없는걸 확인했다. 다음은 pypy에서 돌아간 코드이다 from collections import deque dz = [0, 0, 0, 0, -1,..

STUDY/Algorithm 2021.03.02

[백준] 7576 토마토

https://acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net from sys import stdin from collections import deque input = stdin.readline m, n = map(int, input().split()) q = deque() tomato = [] for r in range(n): tmp = list(map(int, input().split())) tomato.append(tmp) for c in r..

STUDY/Algorithm 2021.03.02

[백준] 1012 유기농배추

https://acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net def dfs(row, col, matrix, visited): pass t = int(input()) for tc in range(1, t + 1): m, n, k = map(int, input().split()) field = [[0] * m for _ in range(n)] visited = [[0] * m for _ in range(n)] for _ in range(k): x, y = map(int, inpu..

STUDY/Algorithm 2021.03.01

[백준] 10026 적록색약

www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net def dfs1(row, col, matrix, visited): delta = [(-1, 0), (1, 0), (0, -1), (0, 1)] # 상하좌우 stack = [(row, col)] while stack: visit_node = stack[-1] visited[visit_node[0]][visit_node[1]] = 1 adjacent = [] for dt in delta: if 0

STUDY/Algorithm 2021.03.01

[백준] 2667 단지 번호 붙이기

www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net def find_adjacent(matrix, node): # node = (row, col) _list = [] delta = [(-1, 0), (1, 0), (0, -1), (0, 1)] #상하좌우 for dt in delta: tmp_row = node[0] + dt[0] tmp_col = node[1] + dt[1] if 0 =n: continue if a[nx][ny] == '1': dfs(nx,ny) ..

STUDY/Algorithm 2021.02.24

[백준] 2606 바이러스

https://acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net node = int(input()) vertex = int(input()) graph = [list() for _ in range(node + 1)] for _ in range(vertex): u, v = map(int, input().split()) graph[u].append(v) graph[v].append(u) visited = [0] * (node + 1) stack = [1] # 1번 컴퓨터 부터 ..

STUDY/Algorithm 2021.02.24