-
[programmers/Swift] 두 정수 사이의 합Archive/Questions 2022. 5. 2. 20:10728x90
programmers.co.kr - 코딩테스트연습 - Lv.1 - 연습문제 - 두 정수 사이의 합
Constraints :
- a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
- a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
- a와 b의 대소관계는 정해져있지 않습니다.
// // Created by Yongwoo Marco on 2022/05/02. // Copyright © 2022 Yongwoo Marco Kim. All rights reserved. // func solution(_ a:Int, _ b:Int) -> Int64 { return Int64(a + b) * Int64(max(a, b) - min(a, b) + 1) / Int64(2) } print(solution(3, 5)) // 12 print(solution(3, 3)) // 3 print(solution(5, 3)) // 12
How I tried this :
첫 코드는 통과 되었지만 시간이 너무 많이 걸려서 다른 방법을 찾아보았다.A...B 모든 수의 합도 좋지만 O(B-A) 만큼에 시간이 들기 때문에
A...B 형태는 곧 `(1...B-A).reduce(0) { $0 + $1 } * (B-A)`으로 볼 수도 있다
A < B 일때
(A + B) * (B - A + 1) / 2 공식이 두 사이의 모든 정수의 값이라는 걸 알아내서 적용했다.
What I got is :
func solution(_ a:Int, _ b:Int) -> Int64 { return (min(Int64(a), Int64(b))...max(Int64(a), Int64(b))).reduce(0) { $0 + $1 } }
문제에 관한 모든 저작권 : https://programmers.co.kr/
728x90'Archive > Questions' 카테고리의 다른 글
[programmers/Swift] 2016년 (0) 2022.05.03 [programmers/Swift] 문자열 내 마음대로 정렬하기 (0) 2022.05.03 [programmers/Swift] 정수 제곱근 판별 (0) 2022.05.02 [programmers/Swift] 문자열 내 p와 y의 개수 (0) 2022.05.02 [programmers/Swift] 제일 작은 수 제거하기 (0) 2022.05.01