본문 바로가기
파이썬(Python)/프로그래머스

[프로그래머스] 파이썬(Python) : 직사각형 별찍기

by TODAYCODE 2021. 9. 13.
반응형

프로그래머스 코딩테스트 연습 Level 1 - 직사각형 별찍기

 

코딩테스트 연습 - 직사각형 별찍기

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

programmers.co.kr

 

문제의 핵심

1. 입출력을 처리할 수 있는가?

2. 효율적인 출력 방법 구상하기

3. 파이썬만 가능한 초간단 풀이

 


 

파이썬의 기본기를 확인하는 문제이다.

파이썬 언어의 특징은,

파이썬에 익숙하면 익숙할수록 짧고 간단하게 코딩이 가능해진다.

 

나는 아직 C#이 더 익숙하다보니까 자꾸 C#처럼 풀게된다.

아무튼 보편적인 방법으로 푸는 방법파이썬에서만 가능한 초간단 풀이를 해보자.

 

일반적인 풀이

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

a, b = map(int, input().strip().split(' ')

이 기본적으로 쓰여있을텐데,

내가 푼 것처럼 그냥 strip()안쓰고, split()도 그냥 써줘도 된다.

간편하게 풀기 위함인데, 만약의 경우의 실수를 방지하기 위해서는 strip()을 사용하는 것을 버릇화해두는 것도 좋을 것 같다.

 

이렇게 입력을 받은 뒤에 for문을 돌려서 출력을 진행해주면 된다.

이게 모든 언어에서 거의 똑같이 쓰이는 일반적인 풀이 방법이다.

 

 

파이썬만 가능한 풀이

a, b = map(int, input().strip().split(' '))
answer = ('*'*a +'\n')*b
print(answer)

파이썬이 제공하는 기능 중에서 강력한 기능 중에 하나는,

문자열과 정수형끼리 곱셈이 가능하다.

"*" * 3 을 하게 되면 *** 이 출력된다.

이것을 활용해서, *를 입력받은 숫자만큼 반복시키고 \n으로 줄바꿈하는 것을 전체한묶음으로 다시 잡아서

두번째 입력값을 곱해버리면 된다.

for문을 사용하지 않기 때문에 더 빠르게 정답을 출력할 수 있게된다.

 

다만, 이렇게 풀이할 경우 제일 마지막에 \n으로 인하여 불필요한 공백이 발생한다.

만약 공백 발생으로 인해서 오답처리가 될 수 있는 상황이라면 해당 방식의 풀이는 사용해선 안된다.

 

 

반응형

댓글