array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
최종 코드
class Solution {
fun solution(arr: IntArray, divisor: Int): IntArray {
var count = 0
for(num in arr){
if (num % divisor == 0){
count ++
}
}
if(count ==0)
{
return intArrayOf(-1)
}
val answer = IntArray(count)
var index = 0
for (num in arr) {
if(num % divisor == 0){
answer[index++] = num
}
}
return answer.sortedArray()
}
}
풀이 과정
class Solution {
fun solution(arr: IntArray, divisor: Int): IntArray {
var answer = intArrayOf()
var index = 0
var element = arr.toString().toInt()
for(i in element.indices){
if(i % divisor ==0){
answer[index] = i
index ++
}
}
println(answer)
return answer
}
}
흠 배열에 있는 수를 조건으로 판별해야하는데,
생각나는 대로 일단
for 문으로 i가 element의 요소 일때 i를 디바이저로 나누어서 떨어지면, answer 배열에 저장할까 했는데 문법적으로 마구 틀려버린듯?
class Solution {
fun solution(arr: IntArray, divisor: Int): IntArray {
var count = 0
for(num in arr){
if (num % divisor == 0){
count ++
}
}
if(count ==0)
{
return intArrayOf(-1)
}
val answer = IntArray(count)
var index = 0
for (num in arr) {
if(num % divisor == 0){
answer[index++] = num
}
}
return answer.sortedArray()
}
}
index 도 반복할 때마다 올라가야해서
for문으로 count 숫자를 세줌
만약에 요소 중에 divisor로 나누어 떨어지는 요소가 하나도 없으면 -1 을 리턴하고,
answer를 count만큼의 크기인 IntArray로 할당하고,
divisor로 나누어떨어지는 요소를 answer 배열에 넣어줌.
마지막으로 answer를 return 할 때 .sortedArray()로 정렬해주면 된다~
class Solution {
fun solution(arr: IntArray, divisor: Int): IntArray {
var answer = arr.filter{it % divisor ==0}.toIntArray()
return if (answer.isEmpty()) intArrayOf(-1) else answer.sortedArray()
return answer
}
}
.filter와 isEmpty 함수를 사용하면 좀 더 간단하게 풀 수 있었다.
근데 .filter를 아직 공부못해서 생각 못했다.
class Solution {
fun solution(arr: IntArray, divisor: Int): IntArray {
var answer = intArrayOf()
arr.forEach { if (it % divisor == 0) answer += it }
answer.sort()
if (answer.size == 0) answer += -1
return answer
}
}
forEach를 사용해서 푼 경우~
class Solution {
fun solution(arr: IntArray, divisor: Int): IntArray {
var answer = ArrayList<Int>()
var idx: Int = 0
for (i in arr) {
if (i % divisor == 0) {
answer.add(i)
}
}
if (answer.isEmpty()) answer.add(-1)
return answer.toIntArray().sortedArray()
}
}
처음에 answer을 빈 IntArray로 설정하고
index를 표현할 변수 idx 를 만들었음
그리고 for 문으로 divisor로 나누어지면 i를 answer에 추가
만약에 answer이 빈배열이면 -1을 추가함
그리고 answer을 리턴하고 정수배열로 만들어주고, 정렬을해줌
Iterable 확장 함수에 대해서 공부하면 더 쉽게 풀 수 있었을듯!
빨리 공부해야지~~