728x90
10994번: 별 찍기 - 19 (acmicpc.net)
이 문제는 계속 도전만 하고 풀지를 못했던 문젠데 다시 트라이해봤다..
def add_star(ptn):
return "* " + ptn + " *"
def star(n):
if n == 1:
return ["*"]
else:
return ['*' * (1 + 4 * (n - 1)), '*'+' ' * (4 * (n - 1) - 1)+'*']\
+list(map(add_star, star(n - 1)))\
+['*'+' ' * (4 * (n - 1) - 1)+'*', '*' * (1 + 4 * (n - 1))]
print(star(int(input())))
print("\n".join(star(int(input()))))
이건 완전히 내가 풀지는 못했고 공중에 돌아다니는 답을 참고를 많이 했다,,
이 문제의 핵심은 그 전에 갖고있는 리스트의 형태를 그대로 들고 와서 어떤 획을 추가해서 모양을 만들고 그 상태로 새로운 리스트를 만드는 것을 반복해야 했다.
그러다 보니 파이썬에서 리스트를 다루는 것에 대한 정확한 이해가 필요했다.
["*****", "* *", "* * *", "* *", "*****"]
이런 형태의 리스트를 "\n".join(lst) 꼴을 이용하여 print 해낼 수 있다거나
map함수에 대한 이해가 필요했는데
map함수 : 리스트나 튜플 형태의 반복이 가능한 것에 반복적인 함수계산을 해주는 아이이다.
이를 list()로 묶어서 새로운 리스트 형태로 탈바꿈이 가능하고
[] + [] 이런 식으로 리스트에 요소를 추가할 수가 있다.
반복해서 하다보면 실력이 늘 것이ㅏㄷ...
728x90
'알고리즘 공부(C++)' 카테고리의 다른 글
프로그래머스 C++ 타겟 넘버 (DFS) (0) | 2023.05.30 |
---|---|
백준 12782 비트 우정지수 (파이썬/그리디) (1) | 2022.10.08 |
1969 DNA (파이썬 / 브루트포스) (0) | 2022.09.29 |
백준 1021 회전하는 큐 (파이썬 / 자료구조) (0) | 2022.09.28 |
백준 1735 분수 합 파이썬 (0) | 2022.09.18 |