본문 바로가기

백준 코딩 테스트

백준 10991번 별찍기 - 2

728x90

[ 문제 ]

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

[ 입력 ]

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

[ 출력 ]

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

 


[ 예제 입력 1 복사 ]

1

[ 예제 출력 1 복사 ]

*


[ 예제 입력 2 복사 ]

2

[ 예제 출력 2 복사 ]

 *

* *


[ 예제 입력 3 복사 ]

3

[ 예제 출력 3 복사 ]

  *

 * *

* * *


[ 예제 입력 4 복사 ]

4

[ 예제 출력 4 복사 ]

   *

  * *

 * * *

* * * *


[ 출처 ]

 

baekjoon 정보

맞았지만 만점을 받지 못한 문제 3090 15624 15740 20138 20142 20145 20146

www.acmicpc.net


< 코드 >

[ 설명 ]

  1.  n개의 입력을 받습니다
  2. n + 1을 해주는데 n + 1을 왜 하냐면, 앞 빈칸의 수를 맞춰주기 위함입니다. (글로는 이해하기 힘드실 수 있습니다 밑에 그림 참조 부탁드립니다.)
  3.  2의 배수 부분은 별표를 프린트 하고, 그 이후는 빈칸으로 프린트합니다

 

n = int(input())                           
m = n + 1
if n>=0 and n<101:
    for i in range(1,m):
        print(" " * (n - i), end="") # 앞 빈칸
        
        for j in range(1,2*i):

            if j % 2 == 1:
                print("*", end="")
            else:
                print(" ", end="")  # 중간 빈칸

        print("") # 뒤 빈 칸

 

잘 이해가 안 되시나요? 코드를 조금 바꿔 보겠습니다.

 


< 수정한 코드 >

 

n = int(input())                           
m = n + 1 
if n>=0 and n <101: 
    for i in range(1, m):  # 첫 for 문
        print("앞" * (n - i), end="")  # 1
        
        for j in range(1,2*i):  # 두 번째 for 문

            if j % 2 == 1: 
                print("*", end="")  # 2
            else: 
                print("중", end="")  # 3

        print("뒤") # 4

 

그리고 결과를 바볼까요?

느낌이 조금 오시나요?  

n이 5라 가정하면, m = 6 이 됩니다.  첫 for문에서 그리고 n - i는 5 - 1(i = 1부터 시작) 이므로 앞이 4개가 출력!

그런 후 두 번째 for문으로 들어가서, j는 1부터 2 * i (2)까지 두 번 출력이 될 거 j = 1 은 if문을 만족하므로 ( 1의 나머지 연산은 1 이므로 ) * 한 번을 찍게 되고 그 후 for문이 끝나고 마지막으로 print("뒤")를 출력 후

다음 for문으로 나아가는 거지요.

혹시 아직도 n + 1을 왜 하는지 이해가 안 되실 수 있습니다. 그렇다면 n + 1을 하지 마시고 for문을 돌려서 출력을 해보시면 이유를 알 수 있을 것입니다.

 

그림 1 - 수정 코드 실행 결과


후기

 

별 찍기를 간단하게 2개만 알아봤습니다. 백준에는 여러개의 뼐찍기가 존재합니다.

여러개를 풀어보면서 입출력에대해 공부하는것이 많은 도움이 됩니다.

저도 그랬고요.

728x90

'백준 코딩 테스트' 카테고리의 다른 글

백준 - 1260번 DFS와 BFS  (0) 2021.02.14
백준 - 11054번 가장 긴 바이토닉 부분 수  (0) 2021.02.12
백준 - 2225번 합분해  (0) 2021.02.11
백준 1463번 - 1로 만들기  (0) 2021.01.28
백준 2438 번 별 찍기 - 1  (0) 2021.01.22