전체 글
-
[백준] 2565번 전깃줄 (파이썬)
2565번: 전깃줄 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는 www.acmicpc.net 코드 n = int(input()) li = [] for i in range(n): li.append(list(map(int, input().split()))) li = list(sorted(li, key= lambda x : x[0])) s= [0 for i in range(n)] for i in range(n): for j in range(i): if li[j][1] < li[i][1] and s[i] < s[j]: s[i] = s[j] s[i] += 1 print..
-
[백준] 11054번 가장 긴 바이토닉 부분 수열 (파이썬)
11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 코드 n = int(input()) li = list(map(int, input().split())) r_li = list(reversed(li)) s=[0 for i in range(n)] r=[0 for i in range(n)] for i in range(n): for j in range(i): if li[j] s[i]: s[i] = s[j] if r_li[j] r[i]: r[i] = r[j] s[i] +=..
-
[백준] 11053번 가장 긴 증가하는 부분 수열 (파이썬)
11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 코드 n = int(input()) li = list(map(int,input().split())) s = [0 for i in range(n)] for i in range(n): for j in range(i): if li[j] < li[i] and s[i] < s[j]: s[i] = s[j] s[i] += 1 print(max(s))
-
[백준] 2156번 포도주 시식 (파이썬)
2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 코드 n = int(input()) li = [] for i in range(n): li.append(int(input())) s = [0 for i in range(n)] for i in range(n): if i == 0: s[i] = li[i] elif i == 1: s[i] = li[i]+li[i-1] elif i == 2: s[i] = max(li[i]+li[i-1], li[i]+li[i-2], li[i-1]+li[i-2]) else: s[i] = max..
-
[백준] 10844번 쉬운 계단 수 (파이썬)
10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 코드 n = int(input()) li = [[0 for i in range(10)] for i in range(101)] for i in range(1,10): li[1][i] = 1 for i in range(2,n+1): for j in range(10): if j == 0: li[i][j] = li[i-1][j+1] elif j ==9: li[i][j] = li[i-1][j-1] else: li[i][j] = li[i-1][j-1] + li[i-1][j+1] print(sum(li[n])%1000000000)
-
[백준] 1463번 1로 만들기 (파이썬)
1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 코드 import sys n = int(input()) li = [0] for i in range(1, n+1): if i == 1: li.append(0) elif i == 2: li.append(1) elif i == 3: li.append(1) else: a, b, c = sys.maxsize, sys.maxsize, sys.maxsize if i % 3 == 0: x = i // 3 a = li[x] if i % 2 == 0: y = i // 2 b = li[y] z = i - 1 c = li[z] li.append(min(a,b,c) + 1) print(li[n])
-
[백준] 2579번 계단 오르기 (파이썬)
2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 코드 n = int(input()) li = [0 for i in range(301)] for i in range(n): li[i] = int(input()) s = [0 for i in range(301)] s[0] = (li[0]) s[1] = (li[0]+li[1]) s[2] = max(li[0]+li[2], li[1]+li[2]) for i in range(3,n): s[i] = max(li[i]+li[i-1]+s[i-3], s[i-2]+li[i]) print(s[n..
-
[백준] 1932번 정수 삼각형 (파이썬)
1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 코드 n = int(input()) li = [] for i in range(n): new = list(map(int, input().split())) li.append(new) for i in range(1,n): for j in range(len(li[i])): if j == 0: li[i][j] += li[i-1][j] elif j == len(li[i])-1: li[i][j] += li[i-1][len(li[i-1])-1] else: li[i][j] += max(li[i-1][j], li[i-1][j-1]) print(max(..