반응형
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
- 해시테이블 #heapq #파이썬 #리트코드 #알고리즘
- dfs #bfs #트리구조 #이진트리 #leetcode #파이썬 #python
- dfs #python #leetcode
- dfs #leetcode #python #graph #그래프
- 2004 #조합 0의 개수 #백준
- context #android #getApplicationContext #activity #생명주기 #lifecycle
- dfs #python #leetcode #combination
- Python #leetcode #dfs #그래프 #백트래킹
- AsyncTask #doinbackground #스레드 #thread #android #안드로이드
- dfs #bfs #이진트리 #파이썬 #리트코드
- 코틀린 #Do it #깡샘 #안드로이드
- exoplayer #mediaplayer #엑소플레이어 #안드로이드 #android
- 다익스트라 #dijkstra #leetcode #파이썬 #python #algorithm #787
- handler #looper #thread #runnable #핸들러 #루퍼 #스레드 #러너블
- final #java #자바 #안드로이드
- 다익스트라 #알고리즘 #bfs #그리디 #다이나믹프로그래밍 #leetcode #python
- dfs #그래프 #graph #python #leetcode #course #schedule
- dfs #leetcode #python
- 리트코드 #팰린드롬 #파이썬
- python #백준 #2580 #스도쿠 #dfs #백트래킹
- 파이썬 #zip
- python #백준 #9375 #패션왕 #신해빈
- 백준 #파이썬 #bfs #백트래킹 #1697 #숨바꼭질
- dfs #bfs #트리구조 #이진트리 #leetcode #python #파이썬
- 아스테리스크 #Asterisk #파이썬
- gcd #최대공약수 #백준 #2981 #검문
- leetcode #python #dfs #재귀
- dfs #bfs #leetcode #python
- leetcode #subsets #dfs #itertools #python
- dfs #이진트리 #트리구조 #직렬화 #역직렬화 #파이썬 #리트코드 #leetcode #python
Archives
- Today
- Total
멋진 개발자가 되고 싶다
[백준,Python] 2447. 별 찍기 - 10 (feat.재귀함수) 본문
728x90
반응형
1. 문제 :
https://www.acmicpc.net/problem/2447
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 |