https://www.acmicpc.net/problem/1546
풀이
더보기
첫 줄로 들어오는 값을 떼서 전체 과목의 갯수로 저장해두고,
두 번째 들어오는 값으로 " " 로 split하여, 해당 숫자를 double로 파싱 한 배열을 만들어둔다. 그리고 이 배열의 최댓값을 구해둔다.
배열을 회전하며 주어진 식 (해당 값)/(최댓값) * 100으로 계산한 값을 더한다.
(앞서, 배열을 double로 파싱하는데, 이 때 int로 배열을 파싱하면 배열 내 값도 int, maximize도 int로 된다. int는 소수점을 제공하지 않는다. 따라서 주어진 식으로 계산하면 해당 값이 최댓값보다 작기 때문에 나누면 0이 된다.)
이 더한 값에 첫 줄에 구해둔 전체과목의 갯수를 나누면 결과가 나온다.
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main(args: Array<String>) {
question1546()
}
fun question1546() {
var reader = BufferedReader(InputStreamReader(System.`in`))
var writer = BufferedWriter(OutputStreamWriter(System.out))
var addGrades = 0.0
var number = reader.readLine().toInt()
var grades = reader.readLine().split(" ").map { it.toDouble() }
var max = grades.max()
grades.forEach {
addGrades += it / max * 100.0
}
writer.write("${addGrades / number}")
writer.flush()
}
반응형
'스터디(beakjoon)' 카테고리의 다른 글
Kotlin] 백준 2743번 문제 풀이 (0) | 2023.04.28 |
---|---|
Kotlin] 백준 27866번 문제 풀이 (0) | 2023.04.27 |
Kotlin] 백준 10811번 문제 풀이 (0) | 2023.04.26 |
Kotlin] 백준 3052번 문제 풀이 (0) | 2023.04.25 |
Kotlin] 백준 5597번 문제 풀이 (0) | 2023.04.25 |