백준(Python) 풀이/브루트포스 알고리즘 8

백준(Python) 3085번 사탕 게임 풀이

Python으로 구현한 3085번 사탕 게임 문제 풀이입니다. https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net n = int(input()) data = [list(input()) for _ in range(n)] result = 0 def check_col() : global result for k in range(n) : length = 1 for l in range(n-1) : if data[k][l] == data[k][l+1] : length += 1 result = max(result, length) else : length = 1 def check_..

백준(Python) 2309번 일곱 난쟁이 풀이

Python으로 구현한 2309번 일곱 난쟁이 문제 풀이입니다. https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net def combinations(arr, r) : for i in range(len(arr)) : if r == 1 : yield [arr[i]] else : for next in combinations(arr[i+1:], r-1) : yield [arr[i]] + next data = [int(input()) for _ in range(9)]..

백준(Python) 17136번 색종이 붙이기 풀이

Python으로 구현한 17136번 색종이 붙이기 문제 풀이입니다. https://www.acmicpc.net/problem/17136 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크 www.acmicpc.net def func(x, y, cnt) : global result if y >= 10 : result = min(result, cnt) return if x >= 10 : func(0, y+1, cnt) return if data[x][y] == 1 : # 색종이 붙여야 함 for k in range(4, -1, -1) :..

백준(Python) 16637번 괄호 추가하기 풀이

Python으로 구현한 16637번 괄호 추가하기 문제 풀이입니다. https://www.acmicpc.net/problem/16637 16637번: 괄호 추가하기 첫째 줄에 수식의 길이 N(1 ≤ N ≤ 19)가 주어진다. 둘째 줄에는 수식이 주어진다. 수식에 포함된 정수는 모두 0보다 크거나 같고, 9보다 작거나 같다. 문자열은 정수로 시작하고, 연산자와 정수가 www.acmicpc.net def func(i, q) : if i == n - 1 : no_use = q + [data[i]] return cal_q(no_use) if i == n - 3 : no_use = q + [data[i], data[i+1]] temp = cal_num(data[i], data[i+2], data[i+1]) use..

백준(Python) 1182번 부분수열의 합 풀이

Python으로 구현한 1182번 부분수열의 합 문제 풀이입니다. https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net from itertools import combinations n, s = map(int, input().split()) data = list(map(int, input().split())) result = 0 for i in range(1, n + 1) : for value in combinat..

백준(Python) 14889번 스타트와 링크 풀이

Python으로 구현한 14889번 스타트와 링크 문제 풀이입니다. https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net def cal_diff(team1, team2) : sum_team1 = 0 sum_team2 = 0 for i in range(len(team1)) : for j in range(len(team1)) : sum_team1 += board[team1[i]][team1[j]] sum_team2 += board[team2[i]][team2[j]] retu..

백준(Python) 18428번 감시 피하기 풀이

Python으로 구현한 18428번 감시 피하기 문제 풀이입니다. https://www.acmicpc.net/problem/18428 18428번: 감시 피하기 NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복 www.acmicpc.net from itertools import combinations n = int(input()) # 복도의 크기 board = [] # 복도 정보(N x N) teachers = [] # 모든 선생님 위치 정보 spaces = [] # 모든 빈 공간 위치 정보 for i in range(n) : board.append(list..

백준(Python) 14888번 연산자 끼워넣기 풀이

Python으로 구현한 14888번 연산자 끼워넣기 문제 풀이입니다. https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net n = int(input()) # 연산을 수행하고자 하는 두 리스트 data = list(map(int, input().split())) # 더하기, 빼기, 곱하기, 나누기 연산자 개수 add, sub, mul, div = map(int, input().split()) # ..