JSITCLUB

파이썬 - 프로그래머스 - 수박수박수박수 본문

파이썬/문제풀이

파이썬 - 프로그래머스 - 수박수박수박수

jsitclub 2019. 12. 30. 23:54

프로그래머스 level 1 

문제 설명

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

제한 조건

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

입출력 예

n

return

3

"수박수"

4

"수박수박"

 

코딩테스트 연습 - 수박수박수박수박수박수?

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

programmers.co.kr

 

풀이 및 코드

 

문제요약 

이 문제는 홀수번째 일때는 '수'를 짝수번째일때는 '박'이 적힌 n개의 문자열을 return하는 문제입니다.

 

문제해설

이 문제와 같이 반복 하면서 조건을 확인하는 형태는 아주 단순하지만, 무척 많이 사용되는 형태이므로 문제풀때 염두하시고, 꼭 기억하시기 바랍니다.

#1

먼저 문자열을 return하므로 빈 변수를 만듭니다. 여기서는 answer를 사용하겠습니다.

n번 반복하는 반복문을 만듭니다.(i는 0 ~ n-1 값이 담길겁니다.)

#2

인덱스를 나타내는 i 값이 짝수면 "수" 홀수면 "박"을 변수에 넣습니다.

이때 원래 있는 answer값의 맨뒤에 "수" 나 "박"을 계속 붙여야 하므로 answer=answer+"수" 형태를 사용합니다. (누적)

복합 대입 연산자 += 를 사용하는 것도 가능합니다.

 

결과코드 

def solution(n):

    #1
    answer = ''
    for i in range(n):
        
        #2
        if i%2==0:
            answer+="수"
        else:
            answer+="박"
            
    return answer

 

조금 다른 방법은 "수박"을 n/2번 반복하고, 홀수일때 마지막에 '수'를 붙이는 방법입니다. 여기서 주의 할것은 n/2는 실수형이 되고, 실수형은 range()의 매개변수로 사용할 수 없으니 int()로 형변환을 꼭 해주어야 합니다.

def solution(n):
    
    answer = ''
    for i in range(int(n/2)):        
        answer+="수박"
                    
    if n%2==1:
        answer+="수"
        
    return answer

 

Comments