반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- leetcode #subsets #dfs #itertools #python
- leetcode #python #dfs #재귀
- dfs #bfs #leetcode #python
- dfs #leetcode #python
- dfs #이진트리 #트리구조 #직렬화 #역직렬화 #파이썬 #리트코드 #leetcode #python
- dfs #그래프 #graph #python #leetcode #course #schedule
- python #백준 #9375 #패션왕 #신해빈
- context #android #getApplicationContext #activity #생명주기 #lifecycle
- python #백준 #2580 #스도쿠 #dfs #백트래킹
- dfs #bfs #이진트리 #파이썬 #리트코드
- 다익스트라 #dijkstra #leetcode #파이썬 #python #algorithm #787
- 백준 #파이썬 #bfs #백트래킹 #1697 #숨바꼭질
- final #java #자바 #안드로이드
- 파이썬 #zip
- 코틀린 #Do it #깡샘 #안드로이드
- 2004 #조합 0의 개수 #백준
- 해시테이블 #heapq #파이썬 #리트코드 #알고리즘
- exoplayer #mediaplayer #엑소플레이어 #안드로이드 #android
- 다익스트라 #알고리즘 #bfs #그리디 #다이나믹프로그래밍 #leetcode #python
- dfs #bfs #트리구조 #이진트리 #leetcode #파이썬 #python
- dfs #python #leetcode
- dfs #bfs #트리구조 #이진트리 #leetcode #python #파이썬
- dfs #python #leetcode #combination
- handler #looper #thread #runnable #핸들러 #루퍼 #스레드 #러너블
- dfs #leetcode #python #graph #그래프
- gcd #최대공약수 #백준 #2981 #검문
- 아스테리스크 #Asterisk #파이썬
- 리트코드 #팰린드롬 #파이썬
- Python #leetcode #dfs #그래프 #백트래킹
- AsyncTask #doinbackground #스레드 #thread #android #안드로이드
Archives
- Today
- Total
멋진 개발자가 되고 싶다
[백준,Python] 2447. 별 찍기 - 10 (feat.재귀함수) 본문
728x90
반응형
1. 문제 :
https://www.acmicpc.net/problem/2447
2447번: 별 찍기 - 10
재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이
www.acmicpc.net
2. 알고리즘 :
n=3일 때와 n=3^2일 때의 별 찍기를 보면
n=3에서 *이 찍히는 패턴대로
n=3^2에서 'n=3일 때의 별의 배열'이 찍힌다.
이를 일반화 시켜서 표현하면
n=3^i일 때, 'n=3^(i-1)일 때의 별의 배열'이 찍힌다.
이것이 핵심 알고리즘이다.
아마 몇몇 분들은 이미 이러한 패턴을 알아차렸을지도 모른다.
하지만 우리 같은 초짜들은 패턴을 알아채더라도 어떻게 코드를 작성하여야 하는지가 너무 어렵다.
(그냥 나를 두고 하는 말이다 ㅋ..)
일단 코드를 보면서 내 것으로 만들어보자!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
def draw_star(num):
global Map
if num == 3:
Map[0][:3], Map[2][:3] = ['*', '*', '*'], ['*', '*', '*']
Map[1][:3] = ['*', ' ', '*']
return
a = num//3
draw_star(a)
for i in range(3):
for j in range(3):
if i == 1 and j == 1:
continue
for k in range(a):
Map[a*i+k][a*j:a*j+a] = Map[k][0:a] # 핵심!!
if __name__ == '__main__':
N = int(input())
# NxN 리스트 생성
Map = [[' ' for i in range(N)] for i in range(N)]
draw_star(N)
# 최종 별 찍기 출력
for i in Map:
for j in i:
print(j,end='')
print('')
|
cs |
중요한 부분만 설명하고 넘어가겠다.
우선 NxN개의 공백을 넣은 리스트를 만들었다.
(코드를 보면 알겠지만 가운데 공백을 표현하기 위해)
그리고 i == 1 and j == 1에 해당하는 부분은 가운데 공백에 해당한다.
그 외의 부분은 핵심 코드를 통해 처리해주면 된다.
728x90
반응형
'Algorithm Study > 백준' 카테고리의 다른 글
[백준,Python] 1002. 터렛 (0) | 2021.07.18 |
---|---|
[백준,Python] 9020. 골드바흐의 추측 (0) | 2021.07.17 |
[백준,Python] 17298. 오큰수 (0) | 2021.07.17 |
[백준,Python] 1929. 소수 구하기(feat.에라토스테네스의 체) (0) | 2021.07.11 |
[백준,Python] 10872. 팩토리얼(Factorial) (feat.재귀함수) (0) | 2021.07.01 |