잘라서 배열로 저장하기

2024. 9. 26. 18:00코딩테스트 입문

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


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


제한사항

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

입출력 예

my_str n result
"abc1Addfggg4556b" 6 ["abc1Ad", "dfggg4", "556b"]
"abcdef123" 3 ["abc", "def", "123"]

입출력 예 설명
입출력 예 #1

  • "abc1Addfggg4556b" 를 길이 6씩 잘라 배열에 저장한 ["abc1Ad", "dfggg4", "556b"]를 return해야 합니다.

입출력 예 #2

  • "abcdef123" 를 길이 3씩 잘라 배열에 저장한 ["abc", "def", "123"]를 return해야 합니다.

유의사항

  • 입출력 예 #1의 경우 "abc1Addfggg4556b"를 길이 6씩 자르면 "abc1Ad", "dfggg4" 두개와 마지막 "556b"가 남습니다. 이런 경우 남은 문자열을 그대로 배열에 저장합니다.

주어진 문자열을 길이 n만큼 쪼개서 저장하는 문제입니다.

 

문자열을 사용하는 문제들은 슬라이싱을 사용하면 편하게 풀 수 있습니다.

이 문제 같은 경우는 n개씩 쪼개지게 해야하며, 시작 인덱스가 n의 배수인 것을 확인하며 풀 준비가 끝납니다.

파이썬으로 문제를 풀어보겠습니다.

def solution(my_str, n):
    # my_str의 인덱스 k부터 k + n까지 슬라이싱해 answer에 저장합니다.
    # range 범위는 시작부터 끝까지 n 단위로 증가시킵니다.
    answer = [my_str[k:k+n] for k in range(0, len(my_str), n)]
    return answer

 

k를 0부터 시작해서 my_str의 끝까지 반복하는데, 그 step이 n으로 설정되어 0, n, 2n, 3n 식으로 시작 인덱스를 n의 배수로 설정합니다.

그 다음, my_str에서 슬라이싱을 사용해 시작 인덱스로부터 n개를 잘라서 answer에 저장합니다.

 

문자열에 슬라이싱을 사용하는 대표 문제라고 생각하시면 됩니다.

참고로 슬라이싱은 범위를 넘어서도 오류가 나지 않으니, index error가 날 걱정은 안하셔도 됩니다.

'코딩테스트 입문' 카테고리의 다른 글

종이 자르기  (0) 2024.09.28
문자열 밀기  (0) 2024.09.27
7의 개수  (0) 2024.09.25
문자열 정렬하기 (2)  (0) 2024.09.24
세균 증식  (0) 2024.09.23