본문 바로가기

백트랙킹14

[백준] 1941번 - 소문난 칠공주 (파이썬) # 소문난 칠공주 from collections import defaultdict import sys input = sys.stdin.readline arr = [] for _ in range(5): arr.append(list(input().strip())) visited = defaultdict(bool) dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] def back_tracking(people): global result # (해당 people의 숫자를 arr좌표상의 문자열로 바꿔서 문자열로 join)의 'Y'의 개수 if (''.join([arr[i//5][i % 5] for i in people]).count('Y')) > 3: return # 7명이라면 if len(peo.. 2022. 3. 22.
[백준] 17852번 - 주사위 윷놀이 (파이썬) # 주사위 윷놀이 import copy move = list(map(int, input().split())) horse = [[0, 0], [0, 0], [0, 0], [0, 0]] road = [[i for i in range(0, 41, 2)], [i for i in range( 0, 11, 2)]+[13, 16, 19], [i for i in range(0, 25, 2)], [i for i in range(0, 31, 2)]+[28, 27, 26], [25, 30, 35, 40]] def back_tracking(x, result, horse): global answer if x == 10: answer = max(answer, result) return for k in range(4): # 도착한.. 2022. 3. 18.
[백준] 19236번 - 청소년 상어 (파이썬) # 청소년 상어 import copy dx = [0, -1, -1, 0, 1, 1, 1, 0, -1] dy = [0, 0, -1, -1, -1, 0, 1, 1, 1] arr = [] fish = [[0]] for k in range(4): temp = list(map(int, input().split())) arr.append([temp[i] for i in range(0, len(temp), 2)]) for i in range(0, len(temp), 2): fish.append([temp[i], [k, i//2, temp[i+1]]]) def fish_move(arr, fish): for i, temp in enumerate(fish): if i != 0: x, info = temp if not ea.. 2022. 3. 12.
[백준] 2239번 - 스도쿠 (파이썬) # 스도쿠 import sys input = sys.stdin.readline N = 9 arr = [] empty = [] for i in range(N): arr.append(list(input().strip())) for j in range(N): if arr[i][j] == '0': empty.append((i, j)) def add_num(k): global isDone if k == len(empty): isDone = True return temp = check_available_num(empty[k][0], empty[k][1]) for x in temp: arr[empty[k][0]][empty[k][1]] = x add_num(k+1) if isDone: return arr[empty[.. 2022. 3. 5.
[백준] 16637번 - 괄호 추가하기 (파이썬) # 괄호 추가하기 import copy import sys input = sys.stdin.readline MAX = sys.maxsize N = int(input()) arr = input().strip() nums = [] op = [] for i, x in enumerate(arr): if i % 2 == 0: nums.append(x) else: op.append(x) def calculate(a, op, b): return str(eval(a+op+b)) def calculate_front(arr): result = arr[0] for i in range(1, len(arr)-1, 2): result = calculate(result, arr[i], arr[i+1]) return result d.. 2022. 2. 12.
[백준] 17136번 - 색종이 붙이기 (파이썬) # 색종이 붙이기 import sys import copy input = sys.stdin.readline MAX = sys.maxsize N = 10 arr = [] length_one = 0 for i in range(N): arr.append(list(map(int, input().split()))) for j in range(N): if arr[i][j] == 1: length_one += 1 paper = [5] * 6 paper[0] = 0 result = MAX def check(x, y, nx, ny, arr): possible = True if 0 2022. 2. 7.
[백준] 17471번 - 게리맨더링 (파이썬) # 게리멘더링 import sys from collections import deque MAX = sys.maxsize input = sys.stdin.readline N = int(input()) person = [0] + list(map(int, input().split())) arr = [[] for _ in range(N+1)] for i in range(1, N+1): temp = deque(map(int, input().split())) temp.popleft() arr[i] = list(temp) def bfs(area): q = deque() visited = [False] * (N+1) q.append(area[0]) visited[area[0]] = True temp = 0 count .. 2022. 2. 5.