-
[프로그래머스] 두 정수 사이의 합 / KotlinProgrammers 2022. 2. 7. 23:29
https://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의 대소관계는 정해져있지 않습니다.
a b return 3 5 12 3 3 3 5 3 12 초기 코드
class Solution { fun solution(a: Int, b: Int): Long { var answer: Long = 0 return answer } }
의식의 흐름
1. for문 돌리면 되는데 리턴값이 Long이다. 왜? 합은 Int Range보다 더 커질수 있어서 그런 듯 하다
2. a와 b의 대소관계가 정해져 있지 않으므로 import kotlin.math.* 하면 min()과 max()를 쓸 수 있어 간단해질 것 같다
해결 코드
import kotlin.math.* class Solution { fun solution(a: Int, b: Int) =(min(a, b)..max(a, b)).fold(0) { total, next -> total + next }.toLong() }
a,b가 같아도 돌아가니까 이렇게 위 코드로 했는데 일부가 자꾸 틀림!!! 아니?? 도대체 왜????? ㅠㅠㅠ
는 바로 fold의 초기값이 0이기 때문이다. 오...
저걸 0L으로 바꾸니까 성공했다. 더하다가 Int Range를 벗어난거였음 ^^)/ 편-안
import kotlin.math.* class Solution { fun solution(a: Int, b: Int) =(min(a, b)..max(a, b)).fold(0L) { total, next -> total + next }.toLong() }
* 정수 자료형 값의 범위 잠깐 짚고 가자 (Int는 약 -21억부터 약 +21억까지)
https://cat-servant.tistory.com/119
'Programmers' 카테고리의 다른 글
[프로그래머스] 서울에서 김서방 찾기 / Kotlin (0) 2022.02.07 [프로그래머스] 문자열 다루기 기본 / Kotlin (0) 2022.02.07 [프로그래머스] 가운데 글자 가져오기 / Kotlin (0) 2022.02.07 [프로그래머스] 나머지가 1이 되는 수 찾기 / Kotlin (0) 2022.02.07 [프로그래머스] 위장 / Kotlin (0) 2022.02.07