문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 차례대로 별을 출력한다.
풀이
n에 따라서 (4*n -3) 만큼의 칸수들이 생기며 테두리를 감싸고 있는 것들의 내부에는 똑같은 것들이 반복된다.
따라서 recursion으로 n을 1씩 줄이면서 x,y좌표의 값들을 2씩 더해준 후 재귀함수로 풀면 쉽게 풀 수 있다.
(처음에 이 로직을 생각하는 것이 익숙하지 않을 수도 있으니 연습하자..)
def draw(n, idx):
if n == 1:
starMap[idx][idx] = '*'
return ;
l = 4 * n -3
for i in range(idx, l+idx):
#위 아래
starMap[idx][i] = '*'
starMap[idx+l-1][i] = '*'
#양 옆
starMap[i][idx] = '*'
starMap[i][idx+l-1] = '*'
return draw(n-1, idx+2)
n = int(input())
lens = 4 * n -3
starMap = [[' '] * lens for _ in range(lens)]
draw(n,0)
for i in range(lens):
for j in range(lens):
print(starMap[i][j], end="")
print()
배운 꿀팁
starMap = [[' '] * lens for _ in range(lens)]
이렇게 2차 배열을 쉽게 선언할 수 있다.!!
'Algorithm(알고리즘) > BOJ(백준) 문제풀이' 카테고리의 다른 글
백준 2751번 파이썬 | 수 정렬하기 2 | Sort (0) | 2020.09.28 |
---|---|
백준 1920번 파이썬 | 수 찾기 | binary search(이분 탐색) (0) | 2020.09.26 |
백준 1063번 파이썬 | 킹 | 시물레이션 (0) | 2020.09.18 |
백준 1946번 파이썬 | 신입 사원 | Greedy (0) | 2020.09.14 |
백준 11497번 파이썬 | 통나무 건너뛰기 | Greedy (0) | 2020.09.13 |