Covenant

문제

water_melon함수는 정수 n을 매개변수로 입력받습니다.
길이가 n이고, 수박수박수...와 같은 패턴을 유지하는 문자열을 리턴하도록 함수를 완성하세요.

예를들어 n이 4이면 '수박수박'을 리턴하고 3이라면 '수박수'를 리턴하면 됩니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def water_melon(n):
    a = ""
    for i in range (n):
        if i%== 0:
            a = a + "수"  
        else:
            a = a + "박"
    return a
 
 
# 실행을 위한 테스트코드입니다.
print("n이 3인 경우: " + water_melon(3));
print("n이 4인 경우: " + water_melon(4));
 
cs

 

 해결하는 방법은 여러가지가 있다. 문제를 볼 때 홀수와 짝수로 나눌 수 있다고 생각하였다. 그리고 입력받은 수를 i라는 변수로 1씩 카운트 하면서 i가 짝수면 '수' 라는 단어를 문자열에 넣고 훌수면 '박'을 문자열에 넣었다.

 


[다른풀이]

1
2
3
4
5
6
7
def water_melon(n):
    s = "수박" * n
    return s[:n]
 
# 실행을 위한 테스트코드입니다.
print("n이 3인 경우: " + water_melon(3));
print("n이 4인 경우: " + water_melon(4));
cs

 

   스라이싱 방법으로 문제를 볼 수 있다. 2 line에서는 수박으로 시작하는 문자열을 만들어주는 것에 불과하다. 중요한 것은 s[:n]부분이다. 이 뜻은 문자열 맨 처음부터 n-1까지 문자열을 살려놓는 것이다. 

  예를 들어  n=2일 경우에  s는 '수박수박'이 될 것이다. return될 때 수박만 남게 될 것이다.



출처 : http://tryhelloworld.co.kr/ 알고리즘 문제