
def solution(str1, str2):
answer = ''
for i in range(len(str1)):
answer += str1[i] + str2[i]
return answer
다른 접근법을 활용한 풀이법이 있는지 찾아보았다.
아래와 같이 join을 활용하여 리스트 내포를 구현한 풀이법도 있었고,
answer = ''.join([str1[i] + str2[i] for i in range(len(str1))])
zip이란 내장 함수를 활용한 풀이법도 발견하였다.
for s1,s2 in zip(str1,str2):
res+=s1+s2
zip은 각 iterable에서 같은 위치의 값을 하나의 튜플로 묶는다.
특징으로는, 가장 짧은 iterable을 기준으로 종료 처리한다.
zip("abc", "12345")
# ('a','1'), ('b','2'), ('c','3')
**iterable 이란?
python, javascript 등에서 리스트, 문자열과 같이
내부에 여러 요소를 포함하고 있어 for문 등을 통해
요소를 하나씩 순회 할 수 있는 객체를 의미한다.
문제의 요소로 주어진 문자열 또한 iterable이라서 zip 사용으로 구현 가능하였고,
서로 길이가 같았기 때문에 종료 처리 기준의 영향을 받지 않았다.
zip을 사용한 for문을 분해하면 다음과 같다.
for s1,s2 in [('a','1'), ('b','2'), ('c','3')]:
res+=s1+s2
반복이 일어날 때마다 s1은 튜플의 첫번째 값, s2는 튜플의 두번째 값을 가져온다.
꺼내온 튜플의 값을 result에 순차적으로 더해주는 것으로 이해할 수 있다.
join으로 리스트 내포를 구현한 코드에 zip을 적용해 볼 수도 있다.
answer = ''.join(s1 + s2 for s1, s2 in zip(str1, str2))