코드
def solution(my_str, n):
answer = [my_str[i:i+n] for i in range(0, len(my_str), n)]
return answer
my_str = "abcdef123", n=3 이면 my_str을 n 개씩 잘라 배열로 나타내는 문제이다.
리스트를 자르기 위해서는 슬라이싱을 사용한다.
n 개씩 자르기로 했으므로 [ i : i+n ]과 같이 슬라이싱을 할 수 있다.
i의 범위는 리스트의 첫 번째 요소가 위치하는 0번 인덱스부터 마지막 인덱스까지이며, n 개씩 잘라야 하므로 n씩 증가시켜 주면 된다. 그래서 for문의 range는 ( 0, len(my_str), n )으로 나타낸다.
i는 len(my_str)까지이므로 리스트의 범위를 넘어가지 않는다.
반면, i+n은 마지막 len(my_str)에서 n을 더해준 값이므로 리스트의 범위를 넘어간다.
슬라이싱에서 끝 인덱스는 범위를 벗어난 인덱스를 지정해 줄 수 있기 때문에 에러가 발생하지 않는다.
슬라이싱에 대한 더 자세한 예와 설명은 아래 링크에서 볼 수 있다.
반응형