📍문제
문자열 my_string과 정수 k가 주어질 때,
my_string을 k번 반복한 문자열을 return 하는 solution 함수를 작성해 주세요.
⚠️ 제한사항
- 1 ≤ my_string의 길이 ≤ 100
- my_string은 영소문자로만 이루어져 있습니다.
- 1 ≤ k ≤ 100
# 내가 작성한 코드
def solution(my_string, k):
answer = my_string * k
return answer
이것밖에 생각이 안 났다.
혹시 너무 간단한 건 아닌지, 더 알고리즘 문제에 맞게 풀어 볼 수 있는 방법은 없는지 알아보았다.
def solution(my_string, k):
answer = ''
for _ in range(k):
answer += my_string
return answer
왠지 모범답안 같았다. 문제에도 answer= '' 이 주어져 있어서 딱 이런 로직을 바라고 문제 낸 느낌.
k만큼 for 루프를 돈다. 진행하는 동안 빈 answer 변수에 my_string 내부 문자열을 k만큼 반복해 출력한다. 시각적으로 이해하기 쉬운 코드라고 생각된다.
def solution(my_string, k):
return ''.join([my_string for _ in range(k)])
join() 함수를 통해 문자열을 공백을 기준으로 병합하는 것이다.(문자열을 합할 때 join() 함수를 많이 얘기하는 것 같다. 한눈에 보기 어렵지만 작성하기에 편리해서 그런 것 같기도 하다. 기억해 두자.) 리스트를 만들어서, 그 안에 my_string 문자열을 k만큼 리스트에 넣는다.
def solution(my_string, k):
if k == 0: # 만약 k가 0이라면 공백 출력,
return ""
return my_string + solution(my_string, k - 1)
재귀함수는 k가 너무 크면 stack overflow가 날 수 있어, 반복을 많이 해야 한다면 추천하지 않는다. 되려 for문을 사용하는 것이 더 효과적이다.
재작년에 알고리즘 공부할 때 로직 짜기 어려워서 애먹었는데 다시 마주하다니...
solution을 계속 재귀해서 호출하는 걸 이해하여아만 내가 직접 로직을 짜는 데에 어려움이 없을 것 같다. 알고리즘 공부하려면 제대로 꿰고 싶은데... 더 공부해 봐야지.