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번은 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 값에 바로 넣어서 이용할 수 있고 슬라이싱도 바로할 수 있게되어 코드가 많이 깔끔해졌다.
확실한건 역시 코딩은 '모로 가도 서울만 가면 된다'는 말처럼,
다양한 방법과 알고리즘이 존재하고 거기서 입맛에 맞게 코딩을 전개하면 되는 것 같다는 생각이 들었다.
'Programming Language > Python( 파이썬 )' 카테고리의 다른 글
Q. 100 이하의 짝수를 모두 출력하시오 ( 파이썬 while 반복문 / while 파이썬 ) (0) | 2021.06.07 |
---|---|
[파이썬 기초] a의 배수 이지만, b의 배수가 아닌 것 구하기 (파이썬 배수 문제, 파이썬 %, 파이썬 !=) (0) | 2021.02.04 |
파이썬 거꾸로 뒤집기 , list 순서 뒤집기 4가지 방법( Python reversed/ reverse) (0) | 2021.01.19 |
파이썬 사각형 별 찍기(별 그리기)[코딩 테스트 공부] (0) | 2021.01.18 |
3. 파이썬 포맷팅(formating) / 지정 연산자(=) (format. , f-string) (0) | 2020.09.13 |