Algorithm Problem Solving/Programmers

[프로그래머스] 나누어 떨어지는 숫자 배열, 두 정수 사이의 합, 문자열 내 마음대로 정렬하기 with Swift

코코자장자장 2021. 12. 6. 19:44

안녕하세요! 오늘은 나누어 떨어지는 숫자배열, 두 정수 사이의 합, 문자열 내 마음대로 정렬하기 문제를 풀어보았습니다!

 

 

1. 나누어 떨어지는 숫자 배열

    나누어 떨어지는 숫자 배열문제는 %연산자를 사용할 줄 아는지 물어보는 문제입니다.

 

    나누어 떨어진다는 문제는 대상을 %연산 했을때 0이 나오는지로 판단 가능합니다.

 

    그리고 결과물의 갯수가 0이라면 -1을 넣어주고 sort하여 return 하면 됩니다!

 

func solution(_ arr:[Int], _ divisor:Int) -> [Int] {
    var answer: [Int] = [Int]()
    var count = arr.count
    for i in 0..<count {
        if (arr[i] % divisor) == 0 {
            answer.append(arr[i])
        }
    }
    if answer.count == 0 {
        answer.append(-1)
    }
    answer.sort()
    
    return answer
}

 

 

2. 두 정수 사이의 합

    두 정수 사이의 합은 for문을 이용해 간단하게 풀면 됩니다.

 

    for문으로 다 더하면 됩니다!

 

    return형이 Int64이므로 형변환 신경 써 주시면 됩니다!

func solution(_ a:Int, _ b:Int) -> Int64 {
    
    var fa:Int64 = Int64(a), fb:Int64 = Int64(b)
    
    if fa > fb {
        var tmp = fa
        fa = fb
        fb = tmp
    }
    
    var result:Int64 = 0
    
    for i in fa...fb {
        result += Int64(i)
    }
    
    return result
}

3. 문자열 내 마음대로 정렬하기

    이 sorted 메소드를 잘 사용하시면 쉽게 풀어나갈 수 있습니다!

 

    sorted by 파라메터에 후행클로져를 이용해 n번째 글자가 같을때는 String의 크기를 이용해 sort해주세요라고 부탁하면 쉽게 풀 수 있는 문제입니다!

 

func solution(_ strings:[String], _ n:Int) -> [String] {
    
    let answer = strings.sorted(by: { (string1:String, string2: String) -> Bool in
        if string1[string1.index(string1.startIndex, offsetBy: n)] == string2[string2.index(string2.startIndex, offsetBy: n)] {
            return string1 < string2
        }
        else {
            return string1[string1.index(string1.startIndex, offsetBy: n)] < string2[string2.index(string2.startIndex, offsetBy: n)]
        }
    })
    
    return answer
}