본문 바로가기

반응형

코딩/Python

(75)
[Python] 백준 2133 타일 채우기 https://www.acmicpc.net/problem/2133 2133번: 타일 채우기 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. www.acmicpc.net 코드 작성 n = int(input()) dp = [0]*31 dp[0] = 1 for i in range(2, n+1, 2): dp[i] = dp[i-2]*3 for j in range(0, i-2, 2): dp[i] += dp[j]*2 print(dp[n]) 코드 풀이 #1 예시 dp[10] = dp[8] * 3 + dp[6] * 2 + dp[4] * 2 + dp[2] * 2 + 2
[Python] 백준 11057 오르막수 11057번: 오르막 수 (acmicpc.net) 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수 www.acmicpc.net 처음 문제를 이해하고 완전이 내 것으로 만들기까지 10일이 걸렸다. 사실 10일 정도면 양호한 숫자인 듯 하다. 초반에 20일 넘겨도 다음날 되면 매번 잊어버리는 문제가 수두룩 하였으니.. 참고로 나는 아이디를 2개 사용한다. 처음에 이해한 코딩을 저장용으로 쓰고, 본 아이디는 틀린문제 보기에서 집중적으로 본다. 그날 풀지 못하면 이해하고 다음날 또 푼다. 또 풀지 못하면 이해하..
[Python] 백준 11055 가장 큰 증가 부분 수열 https://www.acmicpc.net/problem/11055 11055번: 가장 큰 증가 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수 www.acmicpc.net 코드 작성 dp = [0] * 1001 n = int(input()) arr = list(map(int, input().split())) dp[0] = arr[0] for i in range(n): for j in range(i): if arr[i] > arr[j]: dp[i] = max(dp[i], dp[j] + arr[i]) else:..
[Python] 백준 2309 일곱 난쟁이 https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 코드 작성 arr = [] for _ in range(9): arr.append(int(input())) arr.sort() for i in range(9): for j in range(i+1, 9): if sum(arr)-arr[i]-arr[j] == 100: for k in range(9): if k == i or k == j: continue else: print(arr[k]) exit() 코드 풀이..
[Python] 백준 2225 합분해 https://www.acmicpc.net/problem/2225 2225번: 합분해 첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 코드 작성 n, k = map(int, input().split()) dp = [[0]*201 for _ in range(201)] for i in range(201): dp[1][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] print(dp[k][n] % 1000000000) 코드 풀이 #1 초기값 k = 1일 때, 즉 1자리수 일 때 N은 그 자신의 수만 될 수 있으므로 1이 된다. ..
[Python] 백준 1476 날짜 계산 1476번: 날짜 계산 (acmicpc.net) 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 코드 작성 a,b,c = map(int, input().split()) cnt = 0 while True: if a == 0 and b == 0 and c ==0: break if a == 0: a = 15 if b == 0: b = 28 if c == 0: c = 19 a -= 1 b -= 1 c -= 1 cnt += 1 print(cnt)
[Python] 백준 14002 가장 긴 증가하는 부분 수열4 https://www.acmicpc.net/problem/14002 14002번: 가장 긴 증가하는 부분 수열 4 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 코드 작성 n = int(input()) k = list(map(int, input().split())) dp = [1] * n for i in range(n): for j in range(i): if k[i] > k[j]: dp[i] = max(dp[i], dp[j] +1) print(max(dp)) Max = m..
[Python] 백준 2156 포도주 시식 https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 코드 작성 n = int(input()) dp = [0] * 10001 w = [0] * 10001 for i in range(1, n+1): w[i] = int(input()) dp[1] = w[1] dp[2] = w[1] + w[2] for i in range(3, n+1): dp[i] = max(dp[i-1], dp[i-2] + w[i], dp[i-3] + w[i] + w[i-1]) print..

반응형