본문 바로가기

카테고리 없음

알고리즘 25 ~ 26

나누어 떨어지는 배열

 

문제 설명

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.

divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

제한사항
  • arr은 자연수를 담은 배열입니다.
  • 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
  • divisor는 자연수입니다.
  • array는 길이 1 이상인 배열입니다.
class Solution {
    fun solution(arr: IntArray, divisor: Int): IntArray {
        var answer = intArrayOf()
        arr.forEach {
            if(it % divisor == 0){
                answer += it
            }
        }
        
        answer.sort()
        if (answer.isEmpty()) {
            answer += -1
        }
        return answer
    }
}

 

forEach : 순서가 있는 배열의 확장 함수 for문을 사용하던 외부 함수에서 내부함수로 바꿔 줄수 있게 만든 확장함수

 it : 람다식 내부에서 사용되는 암시적 변수 람다식에서 인자가 하나인 경우 it을 사용해서 인자를 참조할 수 있습니다. 

isEmpty : 문자열 길이가 0인 경우 true 리턴

 

 

음양 더하기

 

문제 설명

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.


제한사항
  • absolutes의 길이는 1 이상 1,000 이하입니다.
    • absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
  • signs의 길이는 absolutes의 길이와 같습니다.
    • signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
class Solution {
    fun solution(absolutes: IntArray, signs: BooleanArray): Int {
        var answer = 0
        signs.forEachIndexed {index, i ->
            when (i) {
                true -> answer += absolutes[index]
                else -> answer -= absolutes[index]
            }
        }
        return answer
    }
}

 

forEachindexed : forEach와 동일한 기능을 수행하며 value뿐만 아니라 index까지 같이 사용할 수 있다.

728x90