Notice
Recent Comments
Link
Today
Total
12-20 18:44
«   2024/12   »
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
Archives
관리 메뉴

nayonngme

[브3/파이썬] 백준2446 - 별 찍기 - 9 본문

Algorithm/백준

[브3/파이썬] 백준2446 - 별 찍기 - 9

nayonng 2024. 7. 3. 00:49

https://www.acmicpc.net/problem/2446


문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

예제 입력 1 복사

5

예제 출력 1 복사

*********
 *******
  *****
   ***
    *
   ***
  *****
 *******
*********

내 코드 (32ms)

n = int(input())

for i in range(n-1):
    print(' '*i+'*'*(2*n-2*i-1))
for i in range(1,n+1):
    print(' '*(n-i)+'*'*(2*i-1))

 

 

다른 코드 (40ms)

n = int(input())

for i in range(n, 0, -1):
    print(" " *(n-i) + "*"*(2*i-1))
for i in range(2, n+1):
    print(" "*(n-i) + "*"*(2*i-1))

 

==> 윗 부분의 경우 : 특정값(-1)이 계속 감소하는 for문 사용

==> 아래 부분의 경우 : 겹치는 부분은 이미 위에서 다뤘으므로, 2부터 시작하는 for문을 놓기


틀린 이유 분석

print(''(n-i)+' '(i-1)+'' ... 처럼 가운데 별은 고정하고 푸는 방식을 고수했더니 계속 틀렸다.
코드를 고쳐봐도 계속 틀리길래 지문에 나온 2*n-1 에서 힌트를 얻어서 접근법을 바꿔봤다.

 

내 코드가 시간이 빠르긴해도 식이 복잡하니 다른 분들이 사용하신 코드를 사용하는 게 좋은거 같다.

Comments