Python 공부기록

Python3 _ 직사각형 별찍기

혜원89 2021. 2. 23. 15:49

문제 설명

이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.


제한 조건

  • n과 m은 각각 1000 이하인 자연수입니다.

예시

 

입력

5 3

출력

*****

*****

*****


✅첫 번째 풀이

1
2
3
4
5
a, b = map(int, input().strip().split(' '))
for j in range(0, b):
    for i in range(0, a):
        print("*",end="")
    print("\n", end="")
cs

변수 j는 행을 담당하고 변수 i는 열을 담당한다. 먼저 행이 넘어가기 전에 입력된 변수 a만큼의 별이 한 행에 작성되어야 하기 때문에 이중 for문 중 안쪽에 변수 i에 대한 for문이 있다. print문에 *을 작성하고 뒤에 < end="" >를 작성하면 print문을 통해 자동으로 출력되는 줄 바꿈(\n)을 없앨 수 있다.

 

< end="" >를 작성하지 않았을 때 출력

*
*
*
*
*


*
*
*
*
*


*
*
*
*
*

원리를 좀 더 자세히 알아보자면, print는 출력문을 출력하고 뒤에 자동으로 줄바꿈(\n)을 출력한다. 이때 end를 사용하면 print가 출력문을 출력한 뒤에 올 값을 수정하여 원하는 값으로 바꿔준다. 위의 예에서 < end="" >에서는 따옴표 사이에 아무것도 없으므로 아무것도 출력하지 않은 것이다. 따옴표 사이에 < end="!" >와 같이 입력하면 한 출력문마다 뒤에 !가 붙는다.

 

✅두 번째 풀이

첫 번째 풀이는 문제를 처음 풀며 내 생각을 정리한 코드이다. 그래서 보통 하나하나 단계별로 풀어서 작성하게 되고 for문과 if문 등을 많이 쓰게된다.. 처음 풀이를 채점하고 나서는 코드를 좀 더 간단히 하거나 다른 방법으로 풀 수 있는지 알아본다.

그렇게 나온 두 번째 풀이 !

 

1
2
a, b = map(int, input().strip().split(' '))
print(("*"*a+"\n")*b)
cs

이중 for문까지 쓸 것도 없었다.ㅎ^ㅎ 문자도 수학식으로 계산이 가능한 파이썬은 위와 같이 print문 안에서 행과 열의 수를 입력받은 변수 a, b로 계산하여 바로 원하는 출력이 가능하다.

이해를 돕자면 출력하고자 하는 *을 열의 개수 a와 곱하고< ***** >, 뒤에 줄바꿈(\n)을 더한다< *****\n >. 그리고 이렇게 나온 한 행을 행의 개수 b와 곱하여 출력문을 완성한다. 

 

'Python 공부기록' 카테고리의 다른 글

Python _ 평균구하기  (0) 2021.03.02
Python _ 행렬의 덧셈  (2) 2021.02.26
Python _ 핸드폰 번호 가리기  (0) 2021.02.25
Python _ x만큼 간격이 있는 n개의 숫자  (0) 2021.02.24
Python 공부기록  (1) 2020.11.03