https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 내 코드 import sys input = sys.stdin.readline n = int(input()) stair=[0]*(301) dp =[0]*(301) for i in range(1, n+1): stair[i] = int(input()) dp[1] = stair[1] dp[2] = dp[1] + stair[2] for i in range(3, n+1): dp[i] = max(dp[i-3]+stair[..
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 내 코드 import sys input = sys.stdin.readline n = int(input()) dp = [0]*(n+1) #계산한 결과값을 더해주는 것이 아니라, 몇 번 계산했는지를 더해줄 것임 for i in range(2, n+1): dp[i] = dp[i-1]+1 #한 번 더 계산했다는 뜻 if i%3==0: dp[i]= min(dp[i], dp[i//3]+1)#만약 i가 9라면 이미 i//3인 3에는 그 때의 계산 결과값이 있을 것임. 그걸 불러오는 것이다. if i%2 ==0: dp[i] ..
https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 내 코드 import sys input = sys.stdin.readline n = list(map(int, input().strip())) flag =1 for i in range(len(n)-1): if n[i] != n[i+1]: flag+=1 print(flag//2) 리뷰 0과 1밖에 숫자가 없기 때문에 이전 숫자랑 같지 않으면 바뀐 것으로 처리한다. 그리고 숫자가 바뀔 때마다 바뀐 횟수..
https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 내 코드 import sys input = sys.stdin.readline n = int(input()) t=[] p=[] dp = [0 for _ in range(n+1)] #금액 더할거임 for i in range(n): a, b = map(int, input().split()) t.append(a) p.append(b) for i in range(n-1, -1, -1): if t[i]+i > n: #퇴사후까지 상담하게 생겼으면 패스 dp[i] = dp[i+1] else: dp[i] = max(dp[i+1], dp[t[i]+i]..
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 내 코드 import sys input = sys.stdin.readline n = int(input()) lst = list(map(int, input().split())) dp = [1 for i in range(n)] ans = [] for now in range(n): #현재 비교할 수 for prev in ..
https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 내 코드 import sys input = sys.stdin.readline n = int(input()) lst = list(map(int, input().split())) dp = [1 for i in range(n)] for now in range(n): #현재 비교할 수 for prev in range(now):..
https://www.acmicpc.net/problem/5073 5073번: 삼각형과 세 변 각 입력에 맞는 결과 (Equilateral, Isosceles, Scalene, Invalid) 를 출력하시오. www.acmicpc.net 내 코드 while 1: a,b,c = map(int, input().split()) if a==b==c==0: break maxi = max(a,b,c) if sum((a,b,c))- max((a,b,c))
https://www.acmicpc.net/problem/23971 23971번: ZOAC 4 i행 j열 자리를 (i, j)라고 할 때, (1,1)에 참가자가 앉은 경우 다른 참가자는 (1,2), (2,1), (2,2) 자리를 제외한 나머지 자리에 앉을 수 있다. (2,2)의 경우는 (1,1)과 행 번호 및 열 번호의 차가 1보다 크 www.acmicpc.net 내 코드 import sys import math input = sys.stdin.readline w,h,n,m = map(int, input().split()) #세로 n, 가로 m ans1 = math.ceil(w/(n+1)) ans2 = math.ceil(h/(m+1)) print(ans1*ans2) 수학적 접근 행별로 앉을 수 있는 사람의..