문제 설명
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
문제분석과정
문제에 대한 설명에 앞서 행과 열에 대한 이해를 해보자. 행(Row) 열(Col)은 2차원 리스트(배열)에서의 핵심 개념이다.
파이썬 2차원 배열을 생성하기 위해서는 대부분 2중 for 문 문법을 사용하게된다. 이때 파이썬을 처음 접하거나 익숙하지않다면,
2 중 for 문의 어떤 것이 행을 생성하고 어떤 것이 열을 생성하는 지 몹시 헷갈리곤한다.
이런 경우 divide 해서 생각하면 매우 이해하기 쉽다. 먼저 for 문이 2개 있다고 생각해보자
for _ in range(4):
for _ in range(2):
이런 경우 바깥쪽 for문이 먼저 실행된다.
그 후 안쪽 for문이 실행 된다. 자 그럼 확장해서 생각해보자 .
[[0 for _ in range(2)] for _ in range(4)]
어떤것이 바깥쪽이고 어떤것이 안쪽인가? 위 for 문의 구조는 바로 위 for문의 구조와 작동원리가 일치한다.
자 그럼 이것을 풀어서 생각해보자.
안쪽 for문이 작동을 하고난 후 생성되는 리스트는 [0, 0]
바깥쪽 for문이 작동을 하고난 후 생성되는 리스트는 [0, 0, 0, 0]
안쪽문은 바깥쪽이 돌때마다 작동되므로 아래와 같은 결과가 된다.
[[0, 0] , [0, 0] , [0, 0] , [0, 0] ]
그럼 어디가 몇행의 몇열이고 크기는 어떻게 될까?
바깥쪽을 관여하는 것이 행이고 안을 관여하는 열이라고 생각하면 이해가 쉬워진다.
바깥쪽 4 ,안 2 이므로 4행 2열 인 배열이 되고 Index는 0부터 카운팅하므로 가장 마지막 원소의 Index 는 3,1 이 된다.
이제 문제해결을 위해 문제의 테스트케이스를 살펴보자
*
**
***
****
*****
바깥 쪽 for문은 몇 번이 반복되고 있나? -> N 번
안 쪽 for문은 몇 번이 반복되고 있나? -> 변한다.
변하는 규칙은 어떻게 되나? -> 1, 2, 3, 4.. 로 1부터 N까지 증가한다.
이 분석을 토대로 소스코드를 작성하면 다음과 같다.
소스코드
n = int(input())
for i in range(1,n+1):
for j in range (i):
print('*',end ='')
print("")
분류
구현(implementation)
'PS > Implementation' 카테고리의 다른 글
[PS][BOJ/1181]-단어 정렬 (0) | 2023.04.04 |
---|---|
[PS][BOJ/10812]-바구니 순서 바꾸기 (0) | 2023.02.28 |
[PS][BOJ/10813]-공 바꾸기 (0) | 2023.02.23 |