fun main() {
val line = readLine()!!.split(" ")
var a = line[0].toLong()
var b = line[1].toLong()
var result:Long =
if (a < b) (b * (b + 1)) / 2 - (a * (a - 1) / 2)
else (a * (a + 1)) / 2 - (b * (b - 1) / 2)
print(result)
}
https://www.acmicpc.net/problem/2355
난이도 : 브론즈 2
태그 : 수학, 사칙연산
설명
두 수 A, B가 주어질 때, 두 수 사이에 있는 숫자들의 합을 구하는 문제입니다.
아주 단순하게, 그냥 for문을 이용해 구하려 했는데, 시간초과가 나는 바람에...
1부터 N까지의 합을 구하는 공식인 n * (n-1) / 2를 사용해 풀이하였습니다.
소스코드
fun main() {
val line = readLine()!!.split(" ")
var a = line[0].toLong()
var b = line[1].toLong()
var result:Long =
if (a < b) (b * (b + 1)) / 2 - (a * (a - 1) / 2)
else (a * (a + 1)) / 2 - (b * (b - 1) / 2)
print(result)
}
a > b 일때, 공식을 사용해 b ~ a의 합을 구하려면 어떻게 해야 할까요?
그냥 1~a의 합에서 1~b의 합을 빼면 됩니다.
a < b면 a와 b를 반대로 하고요.
'코딩테스트 > Kotlin' 카테고리의 다른 글
[백준 15921번] [Kotlin] 수찬은 마린보이야!! (0) | 2023.03.26 |
---|---|
[백준 1941번] [Kotlin] 소문난 칠공주 (0) | 2023.03.14 |
[백준 1264번] [Kotlin] 모음의 개수 (0) | 2023.03.11 |
[백준 2477번] [Kotlin] 참외밭 (1) | 2023.03.11 |
[백준 17281번] [Kotlin] ⚾ (0) | 2023.03.07 |