2447번: 별 찍기 - 10 (acmicpc.net)
별이라던가 도형찍는 문제는 아주 초반부터 자주 접했는데..
다른 방식으로 나올 때마다 헷갈려 죽겠다.
언제쯤 익숙해질지 모르겠다.
이번에는 재귀를 사용해서 풀어야 하는 문제인데
접근법을 아예 찾지 못해 한참을 해매다가
결국 다른 분의 풀이 방법을 참고하였다
ㅠㅠ
* 참고 블로그 : [백준] 2447 - 별 찍기 - 10 [Python(파이썬)] — TaxFree (tistory.com)
n = int(input())
def star(l):
if l == 3:
return ['***','* *','***']
arr = star(l//3)
stars = []
for i in arr:
stars.append(i*3)
for i in arr:
stars.append(i+' '*(l//3)+i)
for i in arr:
stars.append(i*3)
return stars
print('\n'.join(star(n)))
길이가 3일 때의 모양을 제일 기본으로 하고 주어지는 n의 값으로 부터 3으로 나누며
재귀함수를 실행시켜주는 것이다.
처음에 이해가 가지 않아서 몇 번 손으로 그려봐야 했다.
시간이 지난 뒤에 다시 풀어보면 좋을 듯 하다.
728x90
'자료구조 & 알고리즘 & cs > CodingTest' 카테고리의 다른 글
[java/python] 프로그래머스 Lv.2 - 땅따먹기 (0) | 2023.05.04 |
---|---|
[python] 10986 - 나머지 합 (0) | 2023.04.26 |
[python] 백준 1629번 - 곱셈 (0) | 2023.04.17 |
[python] 백준 11660번 - 구간 합 구하기 5 (0) | 2023.04.13 |
[python] 백준 2559번 - 수열 (0) | 2023.04.12 |