https://www.acmicpc.net/problem/2438
나도 처음에는 아래와 같이 풀었었다.
물론 상관은 없다. 하지만, 별 찍기 문제가 존재하는 이유는 이중 반복문을 이해시키기 위해서이다.
그리고 아래처럼 풀면 별 찍기 문제가 어려워질수록 풀기가 힘들어진다는 사실! (나도 이렇게 풀다가 어려워서 검색해보다가 알게되었다.)
1
2
3
4
|
N = int(input())
for i in range(1, N+1):
print("*" * i)
|
cs |
아래의 풀이가 정석인데, N을 입력 받았을 때 N x N 크기의 정사각형이 있다고 생각하고,
i 는 행의 번호, j는 열의 번호를 의미한다고 생각하고 아래의 코드를 보고 이해하려 해보자.
1
2
3
4
5
6
7
8
9
|
N = int(input())
for i in range(N):
for j in range(N):
if (i >= j):
print("*", end='')
else:
print(" ")
print(" ")
|
cs |
5번 줄의 if (i >= j): 가 핵심인데 왼쪽 아래 삼각형의 행과 열번호를 생각해보면 모두 행 번호가 열 번호보다 크거나 같기 때문에 5번 줄이 나온 것이다.
0 1 2 3 4
0 *
1 * *
2 * * *
3 * * * *
4 * * * * *
'자료구조와 알고리즘 > Baekjoon' 카테고리의 다른 글
[백준][Python] 10808번: 알파벳 개수 (0) | 2019.10.03 |
---|---|
[백준][Python] 2439번: 별 찍기 - 2 (0) | 2019.10.02 |
[백준][Python] 10804번: 카드 역배치 (0) | 2019.10.02 |
[백준][C++][Python] 2577: 숫자의 개수 (0) | 2019.09.29 |
[백준][C++] 10093번: 숫자 (0) | 2019.09.29 |