코딩테스트/프로그래머스

코딩테스트 - [Swift] 잘라서 배열로 저장하기

clamp 2023. 1. 12. 13:51

잘라서 배열로 저장하기

문제 설명

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


제한사항
  • 1 ≤ my_str의 길이 ≤ 100
  • 1 ≤ n  my_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"가 남습니다. 이런 경우 남은 문자열을 그대로 배열에 저장합니다.

 


해설 + 코드

func solution(_ my_str:String, _ n:Int) -> [String] {
    //String을 Character로 변환하여 저장
    var tmp = Array(my_str)
    //n개의 단어를 담을 word변수
    var word = ""
    //결과를 담아 return 할 result변수
    var result = [String]()
    //9글자를 4개씩 자른다면 2번, 9글자를 3개씩 자른다면 3번 반복
    for _ in 0..<my_str.count / n{
        //n개씩 글자를 잘라서
        for _ in 0..<n{
            word.append(tmp.removeFirst())
        }
        //result변수에 추가하고
        result.append(word)
        //word를 초기화
        word = ""
    }
    //9글자를 4개씩 자르면 1글자가 남으므로 아직 단어가 남았다면 추가
    if !tmp.isEmpty{
        result.append(String(tmp))
    }
    return result
}