코딩 테스트 연습/[프로그래머스] Python

[LV.2] 연습문제 > 직사각형 별찍기 ⭐

duswjd_data 2025. 6. 25. 22:17

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12969

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제 설명

  • 표준 입력으로 두 개의 정수 n과 m이 주어질 때,
    별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력
  • 제한 조건) n과 m은 각각 1000 이하인 자연수

힌트 코드

a, b = map(int, input().strip().split(' '))
print(a + b)
  • input()
    • 사용자로부터 입력 받기
    • 예) 5 3 이라고 입력하면 → "5 3" (문자열로 저장됨)
  • .strip()
    • 입력값에서 앞뒤 공백(띄어쓰기, 줄바꿈 등) 제거
    • " 5 3 " → "5 3"
  • .split(' ')
    • 문자열을 공백 ' ' 기준으로 나눠서 리스트 만들기
    • "5 3" → ['5', '3'] (여기서 두 개의 문자열이 생김)
  • map(int, ...)
    • 리스트 ['5', '3']에 있는 각 요소를 int(정수)로 변경
    • ['5', '3'] → [5, 3] (숫자 리스트)
  • 요약
    • 사용자가 "5 3"처럼 입력하면,
      a=5, b=3이 되는 코드
    • a = 가로(의 개수)
      b = 세로(출력 줄 수)

정답 코드

a, b = map(int, input().strip().split(' '))
for i in range(b):
    print('*' * a)

참고)  for _ in ... 문법

파이썬에서 자주 쓰이는 패턴으로, '반복은 하지만 반복 변수는 사용하지 않을 때'

a, b = map(int, input().strip().split())
for _ in range(b):
    print('*' * a)
  • range(b)
    • 총 b번 반복
  • for _ in range(b)
    • 반복 인덱스 (0, 1, ..., b-1)는 사용하지 않기 때문에 _로 생략
  • print('*' * a)
    • 별 a개를 가로로 출력

최종) 세로 b줄, 각 줄마다 가로 a개의 별을 출력