문제
이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
<제한 조건>
- n과 m은 각각 1000 이하인 자연수입니다.
내가 생각한 풀이 방법
주어진 함수는 입력된 숫자들을 각각 나눠주는 함수이다. 두 수는 각각 a와 b에 대입된다.
사실 map 함수를 많이 안 써봐서 당황했다,,ㅎㅎ
아무튼 그 밑에 한 행 내에서 *을 a번 찍고
그것을 b번 반복하는 이중 for문을 만들면 될 것 같다
코드로 구현
1차 시도
a, b = map(int, input().strip().split(' '))
for i in range(b):
for j in range(a):
print('*')
- 개행을 안 해줘서 그런 것 같다
2차 시도
a, b = map(int, input().strip().split(' '))
for i in range(b):
for j in range(a):
print('*')
print('\n')
- 이렇게 되면 한 행에 가로로 *을 출력하는 게 아니라 새로운 줄에 *를 출력하여 세로로 *이 찍히고 개행하고 또 세로로 *이 찍히고 의 반복이라고 한다.
- 한 줄에 찍으려면 end 옵션을 적어줘야한다!
3차 시도
a, b = map(int, input().strip().split(' '))
for i in range(b):
for j in range(a):
print('*', end='')
print('\n')
- 마지막 개행을 안 하도록 고쳐야 하는 것 같다
4차 시도
a, b = map(int, input().strip().split(' '))
for i in range(b):
for j in range(a):
print('*', end='')
if i != b:
print('\n')
- 뭐가 문제냐..
5차 시도
a, b = map(int, input().strip().split(' '))
for i in range(b):
for j in range(a):
print('*', end='')
if i != b-1:
print()
- 일단 마지막 반복은 b-1이어야함
- print('\n')이 아니라 print()로 개행해야함
→ 이유: print('\n')의 경우는 빈 줄이 생긴다, print()가 말 그대로 개행이다.
다른 사람 풀이
'Python > 프로그래머스' 카테고리의 다른 글
[프로그래머스 lv.1] 예산 (0) | 2023.08.30 |
---|---|
[프로그래머스 lv.1] 소수 만들기 (0) | 2023.08.30 |
[프로그래머스 lv.1]x만큼 간격이 있는 n개의 숫자 (0) | 2023.08.29 |
[프로그래머스 lv.1]행렬의 덧셈 (0) | 2023.08.29 |
[프로그래머스 level1] 핸드폰 번호 가리기 (0) | 2023.08.28 |