본문 바로가기

Algorithm & SQL/Programmers

[Programmers] [Python] 수박수박수박수박수박수?

수박수박수박수박수박수?


문제 설명


길이가 n이고, ''수박수박수박수....' '와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 ''수박수박''을 리턴하고 3이라면 ''수박수''를 리턴하면 됩니다.

제한 조건


  • n은 길이 10,000이하인 자연수입니다.

입출력 예


n return
3 '수박수'
4 '수박수박'

제출코드


def solution(n):
   answer = ''
   for i in range(1,n+1):
       if i % 2 != 0:
           answer += '수'
       else:
           answer += '박'
   return answer

코드설명


n 은 길이를 의미하는 변수 즉, integer타입이므로 짝수 또는 홀수로 분리된다.

이를 이용해 mod 2연산의 결과가 0인지 아닌지에 따라 또는 를 기존 string변수 answer에 덧붙혀 반환하도록 하였다.

다른 사람의 풀이


def solution(n):
   s = '수박' * n
   return s[:n]

위 풀이는 좋아요를 제일 많이 받은 풀이이다.

전달받은 n만큼 '수박'이란 단어를 반복하여 s변수에 저장한 뒤,

s[:n]을 리턴하였다.

간결한 풀이방법 이지만 s 변수를 assign하는데 다소 메모리 낭비가 일어날 수 있다고 생각한다.

예를들어, n이 8인 경우 실질적으로 return을 해야할 변수는 8글자이지만 이를 할당할 때는 '수박' * 8 총 16개의 문자를 필요로 하기 때문이다.

다른 사람의 풀이2


def solution(s):
   return '수박' * (n//2) + '수' * (n%2)

나는 이 풀이가 더욱 효율적이라고 생각한다.

n을 2로 나눈 나머지값을 구해 수박 문자열을 반복하고 mod연산을 통해 홀수인 경우를 고려하여 문자를 추가한다.

깔끔하고 효율적인 풀이방법이다.