프로그래머스/파이썬_입문

잘라서 배열로 저장하기

싱싱한복초이 2024. 11. 19. 12:10

https://school.programmers.co.kr/learn/courses/30/lessons/120913

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[문제 설명]

문자열 my_str n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ my_str의 길이 ≤ 100
  • 1 ≤ n  my_str의 길이
  • my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.

 

[나의 풀이]

 

아이디어

만약 24글자이고, n이 6이면
인덱스를 0:5 / 6:11 / 12:17 / 18:23으로 끊어야 함

 => 0*n:1*n-1 / 1*n:2*n-1 / 2*n:3*n-1 / 3*n:4*n-1
 => [0*n:1*n] / [1*n:2*n] / [2*n:3*n] / [3*n:4*n]

for문에서 i = 0부터 3까지 써야함

 

그런데 25글자라면?

for 문에서 i=0부터 4까지 써야함 

def solution(my_str, n):
    answer = []
    if len(my_str) % n == 0:
        for i in range(0,len(my_str)//n):
            a = my_str[i*n:(i+1)*n]
            answer.append(a)
    else:
        for i in range(0,len(my_str)//n+1):
            a = my_str[i*n:(i+1)*n]
            answer.append(a)
    return answer

 

[다른 풀이] 굳이 if문으로 상황을 나누지 않아도 됐겠다는 생각이 든다

def solution(my_str, n):
    return [my_str[i: i + n] for i in range(0, len(my_str), n)]

 

def solution(my_str, n):
    answer = []

    while my_str:
        if len(my_str)>=n:
            answer.append(my_str[:n])
            my_str=my_str[n:]
        elif len(my_str)<n:
            answer.append(my_str)
            my_str=[]
    return answer

 

def solution(my_str, n):
    answer = [my_str[i*n:(i+1)*n] for i in range((len(my_str)-1)//n+1)]
    return answer

위의 코드들과 동작은 똑같다. 다만 슬라이싱의 범위를 직접 입력했을뿐

'프로그래머스 > 파이썬_입문' 카테고리의 다른 글

최댓값 만들기 (2)  (0) 2024.11.22
직사각형 넓이 구하기  (0) 2024.11.21
머쓱이보다 키 큰 사람  (0) 2024.11.18
중복된 숫자 개수  (0) 2024.11.18
7의 개수+특정 문자 개수 세기  (0) 2024.11.18