본문 바로가기

Programming Language/Python( 파이썬 )

파이썬 단어 짝수 홀수 반복 출력 (Python repeat)

반응형

Q. '티'와 '끌'이라는 단어를 숫자 n만큼 순서대로 출력해보라.

문제는 이렇게 정의된다. 하지만 문제만 보고 이해하기엔 조금 이해가 어렵다고 생각했고 예시를 확인했다.

어떤 값 n을 넣었을 때, '티끌'이라는 단어가 숫자만큼 출력되게 하면 된다.

예를 들면, tikkle(5) : 티끌티끌티  / tikkle(6): 티끌티끌티끌 이렇게 출력되게 만들면 된다. 

오늘도 여러가지 풀이법으로 이것을 풀어보고자 했다.

방법1.

def tikkle(n):
    tik = '티끌'
    if n % 2 == 0:
        tik = tik * int(n/2)
    else:
        tik = tik * int(n//2) + tik[:1]
    print(tik)
    
tikkle(9)
tikkle(4)

방법 1의 출력값.

방법 1번은 def로 함수를 지정해주고, 그 안에 if/else 문으로 세부 사항을 제한해두는 방법으로 했다.

짝수 부분은 확실히 직관적으로 코딩이 가능했지만, 홀수 부분은 tik을 슬라이싱 해야한다는 부분에서(tik[:1]) 조금 더 생각해야했다. 물론 코딩을 원래 잘하고 익숙한 사람이라면 바로 진행했겠지만,,,,

이 방법은 코드를 최대한 짧게 써야한다면 비추천이지만, 나름의 메커니즘을 갖고있다고 생각하여 사용해보았다. 

 

 

방법 2.

def tikkle(n):
    tik = '티끌티끌티끌티끌티끌티끌'
    return tik[:n]
tikkle(9)

 어떻게 보면 가장 원초적인(?) 방법이다. 이 방법은 티끌의 문장을 직접 입력하여 그걸 변수에 지정해준 후 풀어낸 방법이다. 물론, 정말 기본적인 방법이고 n의 값이 한없이 커진다면 에러가 나오겠지만, 시간 제한이 촉박하고 제한 내에 빠르게 값을 출력해내야한다는 경제성 측면에서는 괜찮은 방법으로 볼 수도 있다.

하지만, n의 값이 증가할 수록 def로 지정한 함수가 제 역할을 못하기에 제대로 된 방법이라고 고려하긴 어렵다.

 

 

방법 3.

def tikkle(n):
    tik = '티끌' * n
    return tik[:n]
tikkle(30)

방법 3번은 방법 2번의 단점을 보완해서 작성해보았다.

이 방법은 '티끌'인 string 값을 * n 만큼 곱해주어, 그 제약을 넘어서게 만들어 단점을 극복해보았다. 코드가 간결하고 좋지만 출력 값이 string으로 출력된다는 점을 가진다.

 

 

방법 4.

def tikkle(n):
    return ('티끌' * n)[0:n]
tikkle(9)

 방법 4번은 위의 시도들을 종합해서 두줄의 코드로 압축한 방법이다.

애초에 '티끌'이라는 단어를 따로 지정하기 보다는, 이렇게 return 값에 바로 넣어서 이용할 수 있고 슬라이싱도 바로할 수 있게되어 코드가 많이 깔끔해졌다.

확실한건 역시 코딩은 '모로 가도 서울만 가면 된다'는 말처럼,

다양한 방법과 알고리즘이 존재하고 거기서 입맛에 맞게 코딩을 전개하면 되는 것 같다는 생각이 들었다.

 

반응형