728x90

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

 

2439번: 별 찍기 - 2

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

www.acmicpc.net

문제)

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

하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

입력)

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

출력)

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

풀이)

N=int(input()) #별을 몇개 찍을지 N값으로 입력받는다.
for i in range(1, N+1): #1부터 찍어야 하므로, 범위가 1부터 N+1까지로 지정해준다.출력되는 별의 세로값
    print(" "*(N-i)+"*"*i) #공백은 i와 반대되므로, N-i번을 공백에 곱해준 값과 *을 i번 곱해준 값을 더하면 된다.

N이 5라고 가정했을때, i를 1부터 6까지 반복을 한다는 뜻인데

for()문 안에 print()문은 for문이 조건에 만족할때까지 계속 반복되어 실행이 된다.

첫번째 줄은 공백이 4개가 출력이 되고 *이 1개가 출력이 된다. -->" "*(5-1)+"*"*1

두번째 줄은 공백이 3개가 출력이 되고 *이 2개가 출력이 된다. -->" "*(5-2)+"*"*2

두번째 줄은 공백이 2개가 출력이 되고 *이 3개가 출력이 된다. -->" "*(5-3)+"*"*3

두번째 줄은 공백이 1개가 출력이 되고 *이 4개가 출력이 된다. -->" "*(5-4)+"*"*4

두번째 줄은 공백이 0개가 출력이 되고 *이 5개가 출력이 된다. -->" "*(5-5)+"*"*5

이처럼 공백과 *은 서로 반대관계라는 것을 알 수 있다 그래서, "공백"*(N-i)+ "*"*i값으로 출력하면 원하는 값을 얻을 수 있다.

여기서 +는 ""안에 있는 문자열을 합쳐주는 (문자열 연결 연산자)역할이지 숫자 더하기연산자로 쓰이지 않는다.

 

728x90