3번째로 생각나는 문제로 이전 숫자들의 합을 마지막 숫자로 받는 문자열 출력과 관련된 문제가 있었다.
이 각각의 값은 한줄씩 표시되게 되며 1 다음줄은 11 그 다음줄은 112의 구성으로 되어야한다.
처음 문자열의 구성을 보았을때는 다이나믹프로그래밍과 재귀함수를 사용하면 풀이가 쉬울 것이라고 생각하고 구현을 해보았다.
- 생각해본 솔루션
def solution(print_str_array):
temp_cal = 0
if not print_str_array:
print_str_array.append(1)
print(*print_str_array)
for print_str_array_unit in print_str_array:
temp_cal += print_str_array_unit
print_str_array.append(temp_cal)
if len(print_str_array) < 10:
solution(print_str_array)
print_str_array = []
solution(print_str_array)
함수의 인자로는 출력될 문자열의 배열을 받도록 하며 이는 재귀적으로 다음 함수에 넘어갈 수 있도록 구성한다.
재귀함수는 탈출조건이 꼭 필요하기 때문에 함수안에 조건문을 넣어서 배열의 길이가 10보다 커진다면 탈출 할 수 있는 탈출조건을 먼저 생각해놓고 구현을 시작하였다.
1. 처음 시작은 다르게 할수도 있지만 기본적으로 배열에 아무것도 없을때는 1을 넣고 시작을 할 수 있게 구성한다.
2. 처음 1을 넣은 상태가 된다면 자동으로 다음 경우부터는 해당 내용은 건너뛰게 되므로 신경쓸 필요가 없게 되고 이 추가한 상태에서 배열의 값을 출력할 수 있는 구간을 넣어둔다.
3. 이후에는 for문을 이용하여 지금까지의 배열에 있는 인자를 하나씩 순회하면서 모두 더하는 로직을 수행하며 이 값은 함수가 실행될때 선언한 지역변수 temp_cal에 업데이트 하도록 하며 여기서 구한 값을 print_str_array의 마지막 값으로 추가시켜주도록 한다.
4. 1번에 생각했던 탈출 조건문 안에서 재귀적으로 자기자신을 호출 하도록 하면 원하는 로직이 완성되게 된다.
- 결과 내용
'Algorithm' 카테고리의 다른 글
[프로그래머스] 주차 요금 계산 - 반례 (0) | 2022.09.27 |
---|---|
[프로그래머스] 양궁 대회 (0) | 2022.09.27 |
[ETC] 파일 이름 저장하기 (0) | 2022.09.26 |
[ETC] 원의 방적식을 이용한 별찍기 (0) | 2022.09.25 |
[프로그래머스] 줄 서는 방법 (0) | 2022.09.07 |