백준(Python) 풀이 477

백준(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) 13460번 구슬 탈출 2 풀이

Python으로 구현한 13460번 구슬 탈출 2 문제 풀이입니다. https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net from collections import deque n, m = map(int, input().split()) board = [] for i in range(n) : board.append(list(input())) for j in range(m) : if board[i][j] ..

백준(Python) 9465번 스티커 풀이

Python으로 구현한 9465번 스티커 문제 풀이입니다. https://www.acmicpc.net/problem/9465 9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net import sys input = sys.stdin.readline t = int(input()) for _ in range(t) : n = int(input()) dp = [list(map(int, input().split())) for _ in range(2)] if n == 1 : print(max(dp[0][0], dp[..

백준(Python) 10844번 쉬운 계단 수 풀이

Python으로 구현한 10844번 쉬운 계단 수 문제 풀이입니다. https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net import sys input = sys.stdin.readline n = int(input()) dp = [[0 for i in range(10)] for j in range(n + 1)] for i in range(1, 10) : dp[1][i] = 1 for i in range(2, n + 1) : for j in range(10) : if j == 0 : dp[i][j] = dp[i-1][j+1] elif j == 9 : dp[i][j]..

백준(Python) 11052번 카드 구매하기 풀이

Python으로 구현한 11052번 카드 구매하기 문제 풀이입니다. https://www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net import sys input = sys.stdin.readline n = int(input()) p = [0] + list(map(int, input().split())) dp = [0] * (n + 1) for i in range(1, n + 1) : for j in range(1, i + 1) : dp[i] = max(dp[i], ..

백준(Python) 2011번 암호코드 풀이

Python으로 구현한 2011번 암호코드 문제 풀이입니다. https://www.acmicpc.net/problem/2011 2011번: 암호코드 나올 수 있는 해석의 가짓수를 구하시오. 정답이 매우 클 수 있으므로, 1000000으로 나눈 나머지를 출력한다. 암호가 잘못되어 암호를 해석할 수 없는 경우에는 0을 출력한다. www.acmicpc.net data = list(map(int, list(input()))) l = len(data) dp = [0] * (l + 1) if data[0] == 0 : print(0) else : data = [0] + data dp[0] = 1 dp[1] = 1 # 암호코드 1개 for i in range(2, l + 1) : value = data[i] # 한자..

백준(Python) 2225번 합분해 풀이

Python으로 구현한 2225번 합분해 문제 풀이입니다. https://www.acmicpc.net/problem/2225 2225번: 합분해 첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net import sys input = sys.stdin.readline n, k = map(int, input().split()) dp = [[0] * 201 for _ in range(201)] for i in range(201) : dp[1][i] = 1 dp[2][i] = i + 1 for i in range(2, 201) : dp[i][1] = i for j in range(2, 201) : dp[i][j] = (dp[i-1][j] + dp[i][j-1]) % ..

백준(Python) 9461번 파도반 수열 풀이

Python으로 구현한 9461번 파도반 수열 문제 풀이입니다. https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net t = int(input()) dp = [0] * 101 for _ in range(t) : n = int(input()) def solution(n) : if n == 1 or n == 2 or n == 3 : return 1 if dp[n] != 0 : return dp[n] dp[n] = solution(n-2) + solution(..

백준(Python) 2133번 타일 채우기 풀이

Python으로 구현한 2133번 타일 채우기 문제 풀이입니다. https://www.acmicpc.net/problem/2133 2133번: 타일 채우기 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. www.acmicpc.net # 1일 때 : 0 # 2일 때 : 3 # 3일 때 : 0 # 4일 때 : 11 # 5일 때 : 0 n = int(input()) if n == 1 : print(0) elif n == 2 : print(3) elif n == 3 : print(0) else : dp = [0] * (n + 1) dp[0] = 1 dp[2] = 3 for i in range(4, n + 1) : if i % 2 == 0 : dp[i] = dp[i-2] * 3 f..

백준(Python) 1699번 제곱수의 합 풀이

Python으로 구현한 1699번 제곱수의 합 문제 풀이입니다. https://www.acmicpc.net/problem/1699 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net import sys input = sys.stdin.readline n = int(input()) dp = [i for i in range(n + 1)] for i in range(1, n + 1) : for j in range(1, i) : if j**2 > i : break if dp[i] ..