백준 :: 레벨 햄버거 <16974번>

혜 콩·2022년 7월 8일
0

알고리즘

목록 보기
32/61

> 문제 <

https://www.acmicpc.net/problem/16974

> 풀이 <

> 코드 <

# clone

N, X = map(int, input().split())

burger = [1] * 51            # 버거의 레이아웃 갯수
patty = [1] * 51             # 버거의 패티 갯수


for i in range(1, N+1):
    burger[i] = 1 + burger[i-1] + 1 + burger[i-1] + 1
    patty[i] = patty[i-1] + 1 + patty[i-1]


def eat(n, x):                      # 먹은 패티 갯수
    if n == 0:
        return x
    if x == 1:
        return 0
    elif x <= 1 + burger[n-1]:						# case 1
        return eat(n-1, x-1)                # 맨 아래 번 빼고 (x-1)
    elif x == 1 + burger[n-1] + 1:                  # case 2 딱 ~가운데 패티까지 먹은 경우
        return patty[n-1] + 1
    elif x <= burger[n-1] + burger[n-1] + 1 + 1:	# case 3
        return patty[n-1] + 1 + eat(n-1, (x-(burger[n-1]+2)))
    else:											# case 4
        return patty[n]

print(eat(N, X))
profile
배우고 싶은게 많은 개발자📚

0개의 댓글