반응형
프로그래머스 코딩테스트 연습 Level 1 - 직사각형 별찍기
문제의 핵심
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으로 인하여 불필요한 공백이 발생한다.
만약 공백 발생으로 인해서 오답처리가 될 수 있는 상황이라면 해당 방식의 풀이는 사용해선 안된다.
반응형
댓글