일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- K8S
- 정보과학과
- 방통대 대학원 정보과학과
- 코딩테스트
- 프로그래머스
- openebs
- 해커랭크
- GitLab
- nestedlists
- 파이썬
- 방송통신대학교 대학원 정보과학과
- 3D PRINTING
- on-prem
- ESXi 업데이트
- Code Jam
- swift
- secondlowestgrade
- 하늘과 바람과 별과 詩
- MySQL
- ingress-nginx
- Python
- 2022
- hackerrank
- Kubernetes
- LEVEL 2
- C++
- Qualification Round
- Code Jam 2022
- 하늘과 바람과 별과 시
Archives
- Today
- Total
공대생의 비망록
[프로그래머스][Lv. 1] 두 정수 사이의 합 Swift 풀이 본문
https://programmers.co.kr/learn/courses/30/lessons/12912
풀이
정말 간단한 문제이다.
for loop를 통해 a부터 b까지 모두 더한 값을 반환하는 방법도 좋지만, 유명한 수학자 가우스가 어렸을 때 발견했다던 공식(등차수열의 합 공식)을 활용해 더 쉽게 문제를 해결해보았다.
a + b 에 a부터 b까지의 수(a, b를 포함)를 곱하고 2로 나누면 그 사이의 모든 수의 합을 빠르게 구할 수 있다.
예를 들어 1부터 10까지의 합을 구한다면,
1 + 10
2 + 9
...
5 + 6
까지 합의 결과가 11이 되는 5(10 / 2)개의 항을 구하면 55라는 결과를 얻는다.
(1 + 10) * 10 / 2 에서 n == 10으로 잡으면, n * (n + 1) / 2라는 공식으로 답을 간단히 구할 수 있음을 확인할 수 있다.
끝!
1
2
3
|
func solution(_ a:Int, _ b:Int) -> Int64 {
return Int64((a + b) * (abs(a - b) + 1) / 2)
}
|
cs |
'Programming Language > Swift' 카테고리의 다른 글
[프로그래머스][Lv. 1] 가운데 글자 가져오기 Swift 풀이 (0) | 2022.03.14 |
---|---|
[프로그래머스][Lv. 1] 나누어 떨어지는 숫자 배열 Swift 풀이 (0) | 2022.03.14 |
[프로그래머스][Lv. 1] 문자열 내 마음대로 정렬하기 Swift 풀이 (0) | 2022.03.14 |
[프로그래머스][Lv. 1] 문자열 내 p와 y의 개수 Swift 풀이 (0) | 2022.03.14 |
[프로그래머스][Lv. 1] 문자열 내림차순으로 배치하기 Swift 풀이 (0) | 2022.03.14 |
Comments