문제 2439번
https://www.acmicpc.net/problem/2439
문제는 아래와 같다.
위 문제는 for 반복문의 기본을 알 면 쉽게 풀 수 있는 문제다.
하나씩 풀이해 보자면,
N = int(input())
입력값은 for 반복문 <반복 범위>에 기입이 될 예정이기 때문에 int를 사용하여 정수로 입력받아야 한다.
지정된 범위 '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
*
**
***
****
*****
🎉정답이었다 !🎉