반응형
ryute.tistory.com/39?category=735345
ryute.tistory.com/33?category=735345
알고리즘 너무 안했더니 노답 코더가 되는 거 같아 처음부터 시작해보기로 했다
사실 별만 찍는게 아니라 별 앞에 space bar도 찍는다
n개가 input일 때 거꾸로 밑에서부터 위로 올라가면 아래 표 처럼 출력하면 된다
*번째 행 | spacebar | 별 |
n | 0 | 2n-1 |
n-1 | 1 | 2(n-1)-1 |
n-2 | 2 | 2(n-2)-1 |
n-k | k | 2(n-k)-1 |
1 | n-1 | 1 |
n = int(input())
for i in range(1,n+1):
spacebar = " "*(n-i)
star = "*"*(2*i-1)
print(spacebar+star)
2445번은 별과 별 사이에 spacebar를 찍는 문제다
*번째 행 | 별 | spacebar | 별 |
1 | 1 | 2(n-1) | 1 |
n-k | n-k | 2k | n-k |
n | n | 0 | n |
n+k | n-k | 2(n-k) | n-k |
2n-1 | 1 | 2(n-1) | 1 |
n = int(input())
for i in range(1,n):
spacebar = " "*2*(n-i)
star = "*"*i
print(star+spacebar+star)
print("*"*2*n)
for i in range(n-1,0,-1):
spacebar = " "*2*(n-i)
star = "*"*i
print(star+spacebar+star)
https://www.acmicpc.net/problem/10994
오... 쪼오금 어려워졌다.
홀수/짝수 번 째 줄일 때로 나누고 각 줄에서는 prefix/mid/postpix로 나누어보았다.
prefix = "* ", mid=" " if 짝수 번 째 줄 else "*", postfix=" *"
-> 막상 따져보니 홀수/짝수는 mid만 다르고 패턴은 똑같음!
n=3일 때 홀수번째 행만 생각
*번째 행 | prefix "* " 개수 | mid 개수 | postfix " *" 개수 |
1 | 0 | 9 = 4*(3-0-1)+1 | 0 |
3 | 1 | 5 = 4*(3-1-1)+1 | 1 |
5 | 2 | 1 = 4*(3-2-1)+1 | 2 |
7 | 1 | 5 = 4*(3-1-1)+1 | 1 |
9 | 0 | 9 = 4*(3-0-1)+1 | 0 |
i (조건: i<2n) | i/2 | 4*(3-i/2-1)+1 | i/2 |
가운데를 기준으로 대칭임.
가운데를 제외하고 i번째 행일 때 mid개수는 4*(n-i/2)+1임을 알 수 있음
q= i를 2로 나눈 몫, r = i를 2로 나눈 나머지로 했을 때
q는 별과 spacebar를 찍는 개수, r은 홀수/짝수를 나누는 기준으로 사용하면 됨
import sys
n = int(input())
if n == 1:
print("*")
sys.exit()
def play(i):
spacebar = prefix = postfix= ""
q , r = i//2, i%2
prefix, postfix= "* "*q, " *"*q
mid = " "*(4*(n-1-q)+1) if r == 0 else "*"*(4*(n-1-q)+1)
print(prefix+mid+postfix)
for i in range(1,2*n-1):
play(i)
print("* "*(2*n-1))
for i in range(2*n-2,0,-1):
play(i)
https://www.acmicpc.net/problem/2448
- 10993번 별 찍기 - 18 | https://www.acmicpc.net/problem/10993
'개발 > 알고리즘' 카테고리의 다른 글
알고리즘 관련 사이트 & 책 (0) | 2021.02.01 |
---|---|
코드 구현하기 (0) | 2021.01.29 |
Squares of a Sorted Array (0) | 2021.01.23 |
Find Numbers with Even Number of Digits (0) | 2021.01.22 |
485. Max Consecutive Ones (0) | 2021.01.22 |
댓글