티스토리 뷰
Python3
전체 코드 :
N = int(input())
for i in range(1, (N+1)):
if i == 1: # 첫 번째 줄
print(' ' * (N - i) + "*")
elif i == N: # 마지막 줄
print("*" * (i * 2 - 1))
else: # 중간
print(' ' * (N - i) + "*" + ' ' * (i * 2 - 3) + "*")
별 찍기의 글은 별 찍기(5)로 마무리 하려고 했지만, 별 찍기의 마지막 문제는 마무리 지어야 겠다는 생각이 들었다.
( 별 찍기(5) : >> [Python/Algorithm] - 백준 2442 : 별 찍기(5)
백준 2442 : 별 찍기(5)
Python3 전체 코드 : N = int(input()) for i in range(N): print(' '* (N-i-1) + "*" * ((i+1)*2-1)) 이번에는 뭔가 range(N) 으로 한게 뭔가 코드가 지저분해 보이는 것 같다. N = int(input()) for i in ra..
chae-developer.tistory.com
일단 input output 예제를 보자면,
#input
3
#output
*
* *
*****
#input
5
#output
*
* *
* *
* *
*********
#input
10
#output
*
* *
* *
* *
* *
* *
* *
* *
* *
*******************
10줄로 별을 찍어보니 약간 크리스마스 트리 같다는 생각이 든다.
어쨌든 규칙은 위 예제들로 알 수 있다.
일단 규칙을 보자면,
1. 맨 마지막줄에 입력된 ( N * 2 - 1 ) 개의 별이 띄어쓰기 없이 쭉 출력된다.
2. 첫 번째 줄에는 N개의 가운데에 별이 찍힌다.
3. 중간에는 각 양쪽으로 트리모양을 이루며 왼쪽 (1개) 오른쪽 (1개) , 총 2개의 별이 찍힌다.
수학적인 거라서 딱히 분석할 코드는 없지만, 분석해보겠다.
if i == 1:
print(' ' * (N - i) + "*")
for문의 변수 i 가 1일 때 해당하는 코드이다. if문을 사용했다.
N - i 만큼 띄어쓰기를 한 다음, 별을 찍는다.
예를 들어, N이 5일 때 N - i ( 5 - 1 ) 인 4 만큼 띄어쓰기를 하고 별 찍기!
#123456789
*
* *
* *
* *
*********
elif i == N:
print("*" * (i * 2 - 1))
마지막 줄의 별은 띄어쓰기 없이 N * 2 - 1 개가 찍히니까 단순히 별 만 프린트 해주면 된다.
파이썬에서는 else if 를 elif 라고 쓰더라.. 놀랍다.
else:
print(' ' * (N - i) + "*" + ' ' * (i * 2 - 3) + "*")
굳이 따지자면 중간이 가장 생각하기 어렵겠다.
간단하게 보자면, " 띄어쓰기 1 ' + 별 1 + ' 띄어쓰기 ' 2 + 별 2 " 과 같은 형식이다.
#123456789
*
* *
* *
* *
*********
' 띄어쓰기1 ' 는 첫 번째 줄과 같이 N - i 만큼 띄어쓰기 해주면 된다.
' 띄어쓰기2 ' 는 두 번째 줄일 때는 1번, 세 번째 줄일 때는 3번, 네 번째 줄일 때는 5번 ... 이렇게 홀수로 간다.
i 번째 줄일 때 i * 2 - 3 과 같다는 것을 눈치 챌 수 있다!..
그렇게 ' 띄어쓰기2 ' 는 i * 2 - 3 만큼 띄어쓰기를 해주면 된다.
드디어 별 찍기가 끝났다. 야호.
해당 문제 : https://www.acmicpc.net/problem/10992
10992번: 별 찍기 - 17
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
www.acmicpc.net
'Python > Algorithm' 카테고리의 다른 글
백준 2442 : 별 찍기(5) (0) | 2021.01.23 |
---|---|
백준 2440,2441 : 별 찍기(3),(4) (0) | 2021.01.23 |
백준 2439 : 별 찍기(2) (0) | 2021.01.23 |
백준 2438 : 별 찍기(1) (0) | 2021.01.23 |
백준 10818 : 최소, 최대 (0) | 2021.01.23 |
- Total
- Today
- Yesterday
- 알고리즘
- NaverCloudPlatform
- f-string
- 파이썬
- BAEKJOON
- 백준별찍기
- 데이터베이스
- SUM함수
- 파이썬 입출력
- SQLD40회
- 파이썬문법
- 데이터 모델링
- SQLD 1과목
- 파이썬sum
- SQLD 2과목
- SQLD
- SQLD1과목
- 파이썬입출력
- 백준파이썬
- 백준 별찍기
- 파이썬for문
- 별 찍기
- Python
- Unity GameObject 생성
- 40회 SQLD
- 네이버클라우드플랫폼
- 백준
- range함수
- python별찍기
- python문법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |