※ 본 사진과 해당 게시글 내용의 문제 모두 프로그래머스[Programmers]사이트에 발췌해왔습니다.
이 문제에는 표준 입력으로
두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해
가로의 길이가 n, 세로의 길이가 m인
직사각형 형태를 출력해보세요.
제한 조건 : n과 m은 각각 1000 이하인 자연수입니다.
a, b = map(int, input().strip().split(' '))
if a > 1000 or b > 1000:
print("제한조건에 의해 실행할 수 없습니다.")
else :
for _ in range(b):
print(a*"*")
민망하게도 다른 분들은 제한조건에 대한 코드는 없었다...
(안해도 되는 부분인데 괜히 경우의 수를 만들어 코드가 길어진거겠지..?)
처음 파이썬을 배울 때,
for문 예제로 가장 많이 나오는 유형이 별 찍기라고 느껴질만큼 다양한 모양의 별을 찍었다.
정삼각형, 직사각형 등등..
그래서 추억을 되새기며 for문으로 print()
함수를 활용해 해결했다.
추가적으로 map()
이라는 입력값을 목적에 맞게 묶어서 조절하는 함수와
input()
함수의 하위 함수인 .strip()
과 split()
함수에 대해 알 수 있었다.
a, b = map(int, input().strip().split(' '))
answer = ('*'*a +'\n')*b
print(answer)
깔끔하다..!!
단, 해당 방법을 조금 생각해보니 마지막 \n
이 함께 출력되는 바람에
결과를 출력했을 때,
보이지 않는 빈 줄이 가장 밑 줄에 위치하게 된다.
a, b = map(int, input().strip().split(' '))
for i in range(b):
for j in range(a):
print('*', end='')
print('')
필자는 개인적으로 위의 코드보다 결과물은
end=''
인자로 "*" 간의 간격을 좁혀주고
내부 for문 마지막에 print('')
로 마무리하여 바람직하다고 생각하지만
비교적 계산 단계가 많아지고 코드가 길어진 것 같다.