정수 배열 numbers
가 매개변수로 주어집니다. numbers
의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
numbers
의 원소 ≤ 1,000numbers
의 길이 ≤ 100이것도 어렵다. 흠…
일단 평균 값이니까 다 더해서 나누면 될 것 같음
제한 사항 조건은 나중에 넣고.. 일단 평균 값 먼저 리턴하게 만들어보면.
일단 배열 안에 있는 요소들을 다 더하거나 연산하는 함수 같은게 있는지 알아봐야 할 듯 ?
보니까 .average 를 쓰면 되지 않을까?
그리고 정답의 소수 부분을 .0이나 .5 까지만 인정 해야 되는데
이거는 어떻게 하지?
찾아보니까
roundToInt() 라는 함수가 있긴하다.
부동 소수점 값을 가장 가까운 정수로 반올림해주는 함수인데
나는 정수가 아니고 .0이나 0.5 중에 하나인데?
몰라.. 수학이랑 너무 안 친해서 이런 경우를 어떻게 해야되는지도 모르겠음
문제를 잘 읽자..
class Solution {
fun solution(numbers: IntArray): Double {
var answer: Double = 0
var condition = numbers.size in 1..100
var secondCondition = numbers in 0..1000
if(condition && secondCondition){
answer = numbers.average()
}
return answer.toDouble()
}
}
일단 이렇게 해봤는데 틀렸음!
찾아보니까 secondCondition의 조건이 말이 안된다고함.
배열 자체를 범위와 비교할 수는 없다고 한다.
.all 을 사용하면 컬렉션의 모든 원소가 조건을 만족하는지 판단할 수 있다고 한다.
그리고 변수 answer 에 0을 할당해 놓으니까 실수로 지정해 놓고 정수를 넣어놔서 오류가 난 듯?
그래서 이렇게 수정함
class Solution {
fun solution(numbers: IntArray): Double {
var answer: Double = 0.0
var condition = numbers.size in 1..100
var secondCondition = numbers.all {it in 0..1000}
if(condition && secondCondition){
answer = numbers.average()
}
return answer
}
}
이렇게 했더니 통과했다!
그런데 나는 따로 소수 부분이 0.0 이나 0.5만 가능하게 검사하는 코드를 넣지 않았는데 통과해버림.
이 아니라 걍 여기 문제에서 답 검사할 때 입력을 0.0 이나 0.5만 나오게 준다는 거였다.
문제를 잘 읽자..
class Solution {
fun solution(numbers: IntArray): Double {
var answer: Double = 0.0
var total : Double = numbers.size.toDouble()
var sum = 0
for(i in numbers){
sum += i
}
answer = sum/total
return answer
}
}
이렇게 for문을 사용해서 푼 사람도 있었음
문제를 잘 읽고 풀자
그래도 빡대가리로서 문제 풀면서 하나도 모르겠는거 해결 할 때마다 신난당 재밌어