https://school.programmers.co.kr/learn/courses/30/lessons/12912?language=kotlin
문제
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
제한 조건
a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
a와 b의 대소관계는 정해져 있지 않습니다.
풀이 1
class Solution {
fun solution(a: Int, b: Int): Long {
var answer: Long = 0
(if (a < b) a..b else b..a).forEach { answer += it }
return answer
}
}
- 해당문제는 인자로 받은 두 값 사이의 모든 값들을 더해 반환하는 문제입니다.
- 이문제를 풀기 위해 우선적으로 a와 b의 값을 비교해야 합니다. 코틀린에는 증가는.. , 감소는 down to를 쓰기 때문에 이점을 유의하고 forEach로 사이값들을 모두 더하여 반환해 주면 됩니다. 이 방법은 명시적입니다. 그렇지만 이방법은 일일이 더 해주기 때문에 이 함수를 더효율적으로 바꿔보도록 합시다.
결과 1
풀이 2
import kotlin.math.abs
class Solution {
fun solution(a: Int, b: Int): Long {
return (a + b) * (abs(a - b).toLong() + 1) / 2
}
}
- 수학공식 중 연속된 수열의 합을 구하는 공식이 있습니다. (시작값 + 끝값)*수열의 개수/2 가 수열의 합을 구하는 공식입니다. 이 방법을 사용하여 코드를 짤경우 일일이 값을 더해주지 않아도 되고 중간에 값을 저장하는 구간도 없기에 훨씬 효율적인 코드를 짤 수 있습니다.
결과 2
'코틀린 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - 없는 숫자 더하기 (Kotlin) (0) | 2023.08.03 |
---|---|
[프로그래머스] - 문자열 다루기 기본 (Kotlin) (0) | 2023.08.03 |
[프로그래머스] - 직사각형 넓이 구하기 (Kotlin) (0) | 2023.08.02 |
[프로그래머스] - [1차] 비밀지도 (Kotlin && JAVA) (0) | 2023.08.02 |
[프로그래머스] - 문자열 내 마음대로 정렬하기 (Kotlin) (0) | 2023.08.02 |