728x90
[백준알고리즘] 2448번: 별 찍기 - 11 -Python
https://www.acmicpc.net/problem/2448
와;; 난해했다.. 사실 코드는 그럭저럭 바로 짜기 시작했었는데 이것저것 걸리는 것들이 많았다..
우선 출력시 *의 끝부분까지만 출력하는 것이 아니라 * 뒤에도 빈 공간을 출력해주어야 했다. 그리고 초기 테이블에 이상한 값이 끼었었는지 똑같은 코드인데도 계속 100퍼센트에서 틀리길래 table 생성 부분만 조금 손봤더니 정상적으로 통과했다.
나는 분할정복 개념으로 문제를 풀었다. 큰 삼각형에서 작은 서브 삼각형 세 부분으로 나눠서 반복하도록 해주었다. 이때 가운데 뒤집힌 삼각형 모양으로 빈칸을 뚫어주는 부분도 작성해주었다.
나는 계속 지우는 방향으로 다른 사람들과 좀 다르게 푼 것 같은데 다른 방법으로 더 풀어봐야겠다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
def rm(i, j, h):
if h == 3:
table[i+1][j+2] = ' '
return
new_h = h//2
blank = 5 * (h//6) + 1 * (h//6-1)
nj = j + new_h
for ni in range(i + new_h, i + h):
for b in range(blank):
table[ni][nj+b] = ' '
blank -= 2
nj += 1
rm(i, j + new_h, new_h)
rm(i + new_h, j, new_h)
rm(i + new_h, j + h, new_h)
n = int(input())
table = [[' '] * (n-i-1) + ['*'] * (2*i + 1) + [' '] * (n-i-1) for i in range(n)]
rm(0, 0, n)
for t in table:
print(''.join(t))
|
잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다
728x90
'algorithm > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] 2261번: 가장 가까운 두 점 -Python (0) | 2020.03.06 |
---|---|
[백준알고리즘] 1517번: 버블 소트 -Python (0) | 2020.03.04 |
[백준알고리즘] 2447번: 별 찍기 10 -Python (0) | 2020.03.03 |
[백준알고리즘] 11729번: 하노이 탑 이동 순서 -Python (0) | 2020.03.03 |
[백준알고리즘] 11728번: 배열 합치기 -Python (0) | 2020.03.03 |