티스토리 뷰

문제

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

 

입출력 규칙

1. 입력

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

2. 출력

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

 


문제 풀이

<내 풀이1>

 

for 문을 2번 이용하여 해결하였다.

N = int(input())

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

 

규칙을 찾아서 다음과 같이 해결하였다.

input 값(N)이 = 5 일 때,

공백백의 규칙은 4 3 2 1 0 1 2 3 4 이다. 즉, N-i로 설정하였다.

*의 규칙은 1 3 5 7 9 7 5 3 1로, 홀수의 값을 출력한다. 2*i -1로 설정 가능하다.

 

 

<숏코딩>

 

map 함수와 abs, range 함수를 사용하였다. 

n = int(input())
for i in map(abs, range(1 - n, n)):
 print(' ' * i + '*' * ((n - i) * 2 - 1))

 

똑같은 규칙을 적용하였는데,

숏코딩은 for문을 2번 사용한 것이 아니라,

  • range(1 - n, n) :  1 - n부터 n - 1까지의 숫자를 생성하고,
  • map(abs, ...)는 생성된 숫자들을 절댓값으로 변환하였다.

규칙을 찾고 간단하게 for문만 고려하지 말고, range, abs, map 등을 잘 활용해야겠다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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
글 보관함