![[BOJ] 백준_9095번_1, 2, 3 만들기_Python3](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fns84t%2FbtsBYbch9un%2FjQ4YF5oIjRxb0mfabU5jp0%2Fimg.png)
[BOJ] 백준_9095번_1, 2, 3 만들기_Python3백준 알고리즘2023. 12. 14. 10:00
목차
🌟 1, 2, 3 만들기
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
조건
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
1 초 (추가 시간 없음) | 512 MB | 112585 | 74214 | 51152 | 64.407% |
문제
정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다.
- 1+1+1+1
- 1+1+2
- 1+2+1
- 2+1+1
- 2+2
- 1+3
- 3+1
정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다.
출력
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
예제 입력 1
3
4
7
10
예제 출력 1
7
44
274
풀이 계획
n이 양수이며 11보다 작다고 지정되어 있기 때문에 미리 값들을 initialization()에서 만들어서 d로 넘겨준다. 출력 부분에서 오류가 있었는데 for i in num:을 돌면서 곧바로 d[i] 값을 출력하려고 하니 TypeError: list indices must be integers or slices, not list 라는 에러가 떴었다. i에서 한 단계 더 값을 들어가야 d 내부 값에 접근할 수 있었다.
풀이
import sys
read = sys.stdin.readline
def initialization():
d = [0] * 11
d[0] = 1
for i in range(1, 11):
if i - 1 >= 0:
d[i] += d[i - 1]
if i - 2 >= 0:
d[i] += d[i - 2]
if i - 3 >= 0:
d[i] += d[i - 3]
return d
def solution():
d = initialization()
n = int(read())
num = [list(map(int, read().split())) for _ in range(n)]
for i in num:
for j in i:
print(d[j])
solution()
728x90
반응형
'백준 알고리즘' 카테고리의 다른 글
[BOJ] 백준_11656번_거꾸로 구구단_Python3 (2) | 2023.12.16 |
---|---|
[BOJ] 백준_11656번_접미사 배열_Python3 (0) | 2023.12.15 |
[BOJ] 백준_14916번_거스름돈_Python3 (2) | 2023.12.13 |
[BOJ] 백준_1764번_듣보잡_Python3 (0) | 2023.12.12 |
[BOJ] 백준_17127번_벚꽃이 정보섬에 피어난 이유_Python3 (0) | 2023.12.11 |
@kdj :: Childev'note
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!