pshoon25 2022. 11. 29. 13:46

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

 

문제는 아래와 같다.

위 문제는 for 반복문의 기본을 알 면 쉽게 풀 수 있는 문제다.

 

하나씩 풀이해 보자면,

# 입력
# 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
N = int(input())

입력값은 for 반복문 <반복 범위>에 기입이 될 예정이기 때문에 int를 사용하여 정수로 입력받아야 한다.

 

# 문제
# 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

지정된 범위 'N' 만큼 반복되는 함수이기 때문에 for 반복문을 사용하자.

for i in range(N) :

<반복 변수> i 의 범위는 입력값 N 으로 지정하였다.

이제 코드를 작성해보자.

코드는 별이 1개씩 증가하여 최종은 N개로 출력되는 것이다.

for i in range(N) :
    print('*' * (i+1))

#문제 처럼만 작성하면 위처럼 작성하면 된다.

 

단, 예제 출력1을 보면 별의 시작이 오른쪽 끝부터 작성된다.

그러면 우리는 N개의 칸 중 맨 오른쪽 값부터 순차적으로 별(*) 로 출력하게 하면 된다.

 

우리는 공백(' ')과 별('*')을 활용하여 작성해보자.

별(' * ')은 맨 오른쪽부터 1개씩 증가하여야 함으로, '*' 에  i 값을 곱해주자.

 

단, i 는 0부터 시작함으로 +1을 해주어여 한다.

코드를 작성하면 아래와 같다.

'*' * (i-1)

 

 

이제  앞자리에 공백(' ')은 [N의 수 - 별 갯수] 만큼 공백을 추가하면 된다. 

코드로 작성해보면 아래와 같다.

' ' * (N - (i+1))

 

코드를 하나로 정리하면,

N = int(input())
for i in range(N) :
    print(' ' * (N - (i+1)), '*' * (i+1))
    
#출력값
5
     *
    **
   ***
  ****
 *****

위와 같이 작성할 수 있다.

나는 위와 같은 코드로 작성하여 제출을 하였는데,,,,

🥲결과는 오답이었다.

 

코드엔 문제가 없어보였는데 어디서 오타가 난 것이었을까 ?

그것은 출력값을 확인한 후에 알 수 있었다.

 

print( ) 출력시 콤마( , )로 값을 구분할 경우 자동으로 공백이 한 개 생기는 거였다.

 

N = int(input())
for i in range(N) :
    print('{}{}'.format(' '*(N-1-i),'*'*(i+1)))
    
#출력값
5
    *
   **
  ***
 ****
*****
 
 
그래서 나는 위와 같은 format 형태로 변경하여 제출하였다.
 
결과는,,,

🎉정답이었다 !🎉