swexpertacademy.com/main/learn/course/lectureProblemViewer.do
※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.
어린이 알고리즘 교실의 선생님은 경우의 수 놀이를 위해, 그림처럼 가로x세로 길이가 10x20, 20x20인 직사각형 종이를 잔뜩 준비했다.
그리고 교실 바닥에 20xN 크기의 직사각형을 테이프로 표시하고, 이 안에 준비한 종이를 빈틈없이 붙이는 방법을 찾아보려고 한다. N이 30인 경우 다음 그림처럼 종이를 붙일 수 있다.
10의 배수인 N이 주어졌을 때, 종이를 붙이는 모든 경우를 찾으려면 테이프로 만든 표시한 영역을 몇 개나 만들어야 되는지 계산하는 프로그램을 만드시오. 직사각형 종이가 모자라는 경우는 없다.
[입력]
첫 줄에 테스트 케이스 개수 T가 주어진다. 1≤T≤50
다음 줄부터 테스트 케이스 별로 N이 주어진다. 10≤N≤300, N은 10의 배수
[출력]
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.
입력 | 출력 |
3 30 50 70 |
#1 5 #2 21 #3 85 |
👓 나의 풀이
🎗 다른사람 풀이
def GetSome(x):
if x == N:
return 1
if x > N:
return 0
return GetSome(x+10) + GetSome(x+20) * 2
TC = int(input())
for tc in range(1, TC + 1):
N = int(input())
print('#%d %s'%(tc, GetSome(0)))
재귀를 이용했다.
x=0 getsome(x+10)
x=10
x=20 return 1
x=20 GetSome(x+20) x>N : return 0
x=10 GetSome(x+10)
x=0 GetSome(x+10)
x=10 GetSome(x+20) : return 1
x=0 GetSome(x+20)
인 것 같은데..?
모르겠다. 왜 30이 5가 나오는지..
GetSome(x+20)이 return 1 한 번 나왔는데;;
'coding test' 카테고리의 다른 글
[파이썬] 4871. 그래프 경로 (0) | 2021.01.13 |
---|---|
[파이썬] 4866. 괄호검사 (0) | 2021.01.12 |
[파이썬] 4865. 글자수 (0) | 2021.01.11 |
[파이썬] 4861. 회문 (0) | 2021.01.08 |
[파이썬] 4864. 문자열 비교 (0) | 2021.01.08 |