본문 바로가기

C언어

2025년 2학기 4주차 C언어

n = int(input())
score = [int(input()) for _ in range(n)]

# 계단이 2개 이하일 때다
if n == 1:
    print(score[0])
elif n == 2:
    print(score[0] + score[1])
    
#여기부터는 계단이 3개 이상일 때다
else:
    dp = [0] * n
    dp[0] = score[0]
    dp[1] = score[0] + score[1]
    dp[2] = max(score[0] + score[2], score[1] + score[2])

    for i in range(3, n):
    #i-2번째 계단부터 고려한다
    #i-1번째 계단부터 고려하지 않는 이유는 i-2번째 계단은 뭔지 모르기 때문이다
        dp[i] = max(dp[i-2] + score[i], dp[i-3] + score[i-1] + score[i])

    print(dp[n-1])

 

import sys

def nCr(n, r):
    r = min(r, n - r)  
    # C(n,r) 과 C(n, n-r)은 같으니 둘 중 계산을 덜 하는 쪽으로 고른다.
    if r == 0:
        return 1
    up = 1 #분자
    down = 1 #분모

    for i in range(1, r + 1):
        up *= n - r + i   # 분자의 n*(n-1)*...*(n-r+1)를 계산한다
        down *= i           # 분모의 r!이다

    return up // down

def main():
    data = sys.stdin.read().strip().split()
    n = int(data[0]); m = int(data[1])
    print(nCr(n, m))

if __name__ == "__main__":
    main()

'C언어' 카테고리의 다른 글

2025년 2학기 6주차 C언어  (0) 2025.11.02
2025년 2학기 5주차 C언어  (0) 2025.10.11
2025년 2학기 3주  (0) 2025.09.28
2025년 2학기 2주차  (0) 2025.09.20
2025년 2학기 1주차  (0) 2025.09.14