Plus Minus (easy)
link -
https://www.hackerrank.com/challenges/plus-minus/problem
Plus Minus | HackerRank
Calculate the fraction of positive, negative and zero values in an array.
www.hackerrank.com
1. 문제 파악하기
- 주어진 배열에 양수/ 0 / 음수의 비율을 출력하기
- 비율을 소수점 이하 여섯자리까지 출력한다
2. 아이디어
- compareTo(0) 을 사용해서 0을 기준으로 배열을 새로생성한다 (-1, 0, 1 로 균일화)
- kotlin의 count 함수를 사용하여 쉽게 개수를 구한다 (-1개수/ 0개수/ 1개수 카운트)
- 반올림을 위해 round 함수를 사용한다
- round함수는 소수점 이하 몇자리 인지 표현가능하도록 생성했는데 올림하고자 하는 만큼을 소수점 위로 올리고, round를 통해 반올림한뒤 다시 소수점 이하로 돌려놓는다
3. 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
fun round(value:Double, n:Double): Double {
val m = Math.pow(10.0, n)
return (Math.round(value * m)/m)
}
fun plusMinus(arr: Array<Int>): Unit {
val compareArray = arr.map { v ->
v.compareTo(0)
}
val minus = compareArray.count{ it < 0 }
val zero = compareArray.count{ it == 0 }
val plus = compareArray.count{ it > 0 }
println("%.6f".format(round(plus/arr.size.toDouble(), 6.toDouble())))
println("%.6f".format(round(minus/arr.size.toDouble(), 6.toDouble())))
println("%.6f".format(round(zero/arr.size.toDouble(), 6.toDouble())))
}
fun main(args: Array<String>) {
val n = readLine()!!.trim().toInt()
val arr = readLine()!!.trimEnd().split(" ").map{ it.toInt() }.toTypedArray()
plusMinus(arr)
}
|
cs |
'HackerRank' 카테고리의 다른 글
[HackerRank] Mini-Max Sum - Kotlin (0) | 2021.07.09 |
---|---|
[HackerRank] Staircase - Kotlin (0) | 2021.07.08 |
[HackerRank] Diagonal Difference - Kotlin (0) | 2021.07.04 |
[HackerRank] Compare the Triplets - Kotlin (0) | 2021.07.02 |
[HackerRank] Simple Array Sum - Kotlin (0) | 2021.07.02 |