본문 바로가기
알고리즘/CodeUp PS

[CodeUp][Python] 1358번 : 삼각형 출력하기 5

by 빛밤하늘 2021. 10. 1.
반응형

밑의 링크는 CodeUp에서의 문제 링크입니다.

문제는 링크를 통해서 직접 봐주시길 바랍니다.

 

삼각형 출력하기 5

 ※ 불필요한 공백을 출력하면 표현 에러를 유발합니다. .은 공백을 말합니다. ..* .*** *****

codeup.kr

 

 

 

주의해야 할 점

1. readline과 int나 float를 사용하는 입력 방식

readline을 사용해서 입력할 때는 맨 끝에 \n이 붙어서 입력됩니다.

하지만, 입력한 값을 int나 float으로 처리해 정수, 실수형으로 만들어 줄 때는 

굳이 \n을 떼기 위해 rstrip을 사용할 필요가 없습니다.

숫자 형태를 만들어줄 때 자동으로 사라집니다.

num = int(sys.stdin.readline())

 

2. 불필요한 공백을 출력하면 표현 에러를 유발

문제에서 도움말을 읽어보면 '불필요한 공백을 출력하면 표현 에러를 유발합니다.'라고 나와있습니다.

삼각형의 한 줄에서 (공백 부분)(별 부분) 다음에 또 공백을 출력하면

표현 에러 결과가 나오는 듯합니다.

문제를 그렇게 풀 이유도 없어 보이므로 코드업에서 틀렸다고 판단하는 것이 저도 맞다고 봅니다.

 

 

예제 설명

1. 첫 번째 예제

- 입력

5

 

- 출력

  *
 ***
*****

 

- 설명

입력한 n은 5입니다.

이 n은 삼각형의 마지막 줄에서 출력할 별의 개수이므로

규칙에 맞게 별의 개수를 1 → 3 → 5개씩, 공백의 개수를 2 → 1 → 0개씩 출력해

더보기

  *

 ***

*****

모양으로 만들어줍니다.

 

 

생각한 풀이 과정

3부터 99까지의 홀수인 n을 입력하고 int형으로 변환합니다.

n = int(stdin.readline())

 

- 반복문 시작

1부터 n까지 2를 건너뛰면서 반복합니다.

for num in range(1, n + 1, 2):

 

삼각형 모양을 만들어주기 위해 먼저 공백을 출력합니다.

공백을 (n - 현재 숫자) // 2만큼 출력하고, 다음 줄로 내리지 않습니다.

print(' ' * ((n - num) // 2), end='')

 

별 *들을 현재 숫자만큼 출력합니다.

print('*' * num)

- 반복문 끝

 

 

제출한 파이썬 코드

# readline을 사용하기 위해 import합니다.
from sys import stdin


# n을 입력합니다.
# int형으로 변환합니다.
# n은 3부터 99까지의 홀수 중 하나입니다.
n = int(stdin.readline())

# 1부터 n까지 2를 건너뛰면서 반복합니다.
for num in range(1, n + 1, 2):
    # 삼각형 모양을 만들어주기 위해 먼저 공백을 출력합니다.
    # 공백을 (n - 현재 숫자) // 2만큼 출력하고, 다음 줄로 내리지 않습니다.
    print(' ' * ((n - num) // 2), end='')
    # 별 *들을 현재 숫자만큼 출력합니다.
    print('*' * num)

 

 

제출 결과

CodeUp 1358번 : 삼각형 출력하기 5에서 코드 제출 결과
CodeUp 1358번 : 삼각형 출력하기 5에서 코드 제출 결과

 

 

느낀 점

별들로 삼각형이나 사각형 모양을 출력하는 문제들을 풀어보면

수학적 센스가 있다면 더 쉽게 풀 수 있는 것들이 많았습니다.

이번 문제도 풀면서 그런 느낌이 들더라고요.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

※ 공감 버튼과 구독 버튼도 잊지 말고 꾹 눌러주시면 감사하겠습니다~👍👍

반응형

댓글