프로그래머스 0단계 - 잘라서 배열로 저장하기

이종현·2024년 1월 6일
0

코딩테스트

목록 보기
7/24
post-thumbnail

문제 설명

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


제한사항

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

입출력 예

my_strnresult
"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"가 남습니다. 이런 경우 남은 문자열을 그대로 배열에 저장합니다.

💡 문제 이해하기 → 접근 방법 → 코드 설계 → 코드 구현

1. 문제 이해하기

  • 정해진 숫자만큼 문자열을 잘라서 배열에 저장한다.
  • 문자열은 100을 넘어가지 않기 때문에 O(N^2)으로 문제를 풀어도 상관없음

2. 접근 방법

  • 직관적으로 생각하기
    • 문자열을 배열로 변환하고 배열을 반복적으로 돌면서 앞에부터 6개의 요소씩 문자열을 만들어서 새로운 배열에 저장한다.

3. 코드 설계

  • 직관적으로 생각하기
    • [… 문자열]
    • for문으로 문자열 배열의 길이만큼 반복한다.
    • 반복하면서 정해진 숫자만큼 문자열을 합친다.
      • splice로 배열을 나누고 합치기?
    • 그리고 새로운 배열에 담는다.

4. 코드 구현

function solution(my_str, n) {
  const strArr = [...my_str]
  const answer = []

  for (let i = 0; i < strArr.length / n; i++) {
    const spliceArr = [...strArr].splice(i * n, n)
    let cutString = spliceArr.join('')
    answer.push(cutString)
  }

  return answer
}

회고

for문도 최대한 이용하지 않는 방법을 찾아보려고 했으나, 지금 현재는 이 정도로 생각하는 게 최선인 것 같다. 그래도 splice 배열 메서드에 조금 이나마 더 익숙해지는 계기가 되었다.

profile
데이터리터러시를 중요하게 생각하는 프론트엔드 개발자

0개의 댓글