개발일기

백준 별찍기 파이썬 문제풀이 - 2440, 2441, 2442, 2443 본문

알고리즘 문제풀이/백준

백준 별찍기 파이썬 문제풀이 - 2440, 2441, 2442, 2443

한민기 2021. 9. 1. 21:01
반응형

문제 링크 : https://www.acmicpc.net/problem/2440

 

2440번: 별 찍기 - 3

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

www.acmicpc.net

# 문제풀이

1
2
3
4
= int(input())
 
for i in range(n):
    print("*" * (n - i))
cs

 

단순히 0번째줄에는 5개, 1번째 줄에는 4개가 찍히게 된다.

 

ax + b = y 라는 식에 대입하게 되면 b = 5, a + 5 = 4 따라서 a = -1이 된다. 

-x + 5 = y 라는 식을 구할 수 있게 된다. 따라서 5 - x 일때 여기서 5는 입력값 n이 된다. 

 

 

문제 링크 : https://www.acmicpc.net/problem/2441

 

2441번: 별 찍기 - 4

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

www.acmicpc.net

# 문제풀이

1
2
3
4
5
= int(input())
 
for i in range(n):
    print(" " * i, end='')
    print("*" * (n - i))
cs

위의 문제와 다르게 먼제 공백이 올 수 있다. 공백의 갯수는 i의 수와 일치하기 때문에 i 만큼 공백을 출력해준 후

바로 별을 찍기 위해 end='' 를 사용해 준다.

 

 

문제링크 : https://www.acmicpc.net/problem/2442

 

2442번: 별 찍기 - 5

첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다.

www.acmicpc.net

# 문제풀이

1
2
3
4
5
= int(input())
 
for i in range(n):
    print(" " * (n - i - 1), end='')
    print("*" * (2 * i + 1))
cs

공백의 개수가 0일때 4개, 1일때 3개이다. 

ax + b = y의 식에 대입하게 되면 b = 4, a = -1을 얻을 수 있으며 -x + 4 = y 의 식을 얻을 수 있다.

여기서 4는 입력 값 5 에서 1을 뺀 값이기 때문에 공백을 -i + n - 1 만큼을 찍어주면 된다.

 

 

 

문제링크 : https://www.acmicpc.net/problem/2443

 

2443번: 별 찍기 - 6

첫째 줄에는 별 2×N-1개, 둘째 줄에는 별 2×N-3개, ..., N번째 줄에는 별 1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다.

www.acmicpc.net

# 문제풀이

1
2
3
4
5
= int(input())
 
for i in range(n, 0-1):
    print(" " * (n - i), end='')
    print("*" * ((i - 1* 2 + 1))
cs

위와 똑같은 방법으로 별을 찍는다. 하지만 별을 좀 쉽게 찍기 위해서 반복문을 5 부터 1까지 반복한다.

5부터 1까지 반복하면 별의 개수는 단순히 (i - 1) * 2 + 1이 된다.

후에 i가 5일때는 0개의 공백 i가 4일때는 1개의 공백인 것으로 봐서 입력값 - i 만큼의 공백을 찍어주면 된다. 

반응형
Comments