백준 16974번 레벨 햄버거
문제출처 : https://www.acmicpc.net/submit/16974/33676179
풀이과정
1. 문제를 읽고 재귀함수 사용이란걸 알았으나, 직접 문자열을 만드는 방식으로 풀이를 진행하다보니, 시간,메모리 등등 이렇게 해서는 안된다는 걸 알게 되었다.
2. burger, patty 배열을 만들어 각 레벨 버거의 총 레이어 수와 패티 수를 저장해주었다.
3. 기저조건을 설정해주었다.
4. 재귀가 쓰이는 부분이다.(case1,case2,case3,case4)
n, x = map(int,input().split())
burger = [1] *(n+1)
patty = [1]*(n+1)
for i in range(1,n+1):
burger[i] = 1+burger[i-1]+1+burger[i-1]+1 # burger[i] = B + burger[n-1] + P + burger[n-1] + B
patty[i] = patty[i-1] + 1 + patty[i-1] # patty[i] = patty[n-1] + P + patty[n-1]
# burger, patty 초기화 해주기
def solve(n, x):
if n == 0:
if x == 0:
return 0
elif x == 1:
return 1
elif x == 1:
return 0
# 기저 조건 설정
elif x <= 1+burger[n-1]: # case 1
return solve(n-1,x-1)
elif x == 1+burger[n-1]+1: # case 2
return patty[n-1] + 1
elif x <= 1+burger[n-1] + 1 + burger[n-1]: # case 3
return patty[n-1] + 1 + solve(n-1, x - (1+burger[n-1]+1))
else: # case 4
return patty[n]
print(solve(n,x))
Author And Source
이 문제에 관하여(백준 16974번 레벨 햄버거), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@highway92/백준-16974번-레벨-햄버거
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
n, x = map(int,input().split())
burger = [1] *(n+1)
patty = [1]*(n+1)
for i in range(1,n+1):
burger[i] = 1+burger[i-1]+1+burger[i-1]+1 # burger[i] = B + burger[n-1] + P + burger[n-1] + B
patty[i] = patty[i-1] + 1 + patty[i-1] # patty[i] = patty[n-1] + P + patty[n-1]
# burger, patty 초기화 해주기
def solve(n, x):
if n == 0:
if x == 0:
return 0
elif x == 1:
return 1
elif x == 1:
return 0
# 기저 조건 설정
elif x <= 1+burger[n-1]: # case 1
return solve(n-1,x-1)
elif x == 1+burger[n-1]+1: # case 2
return patty[n-1] + 1
elif x <= 1+burger[n-1] + 1 + burger[n-1]: # case 3
return patty[n-1] + 1 + solve(n-1, x - (1+burger[n-1]+1))
else: # case 4
return patty[n]
print(solve(n,x))
Author And Source
이 문제에 관하여(백준 16974번 레벨 햄버거), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@highway92/백준-16974번-레벨-햄버거저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)