https://school.programmers.co.kr/learn/courses/30/lessons/12912
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
* 두 정수 사이의 합 *
두 정수 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가 주어졌을 때,
a와 b 사이에 있는 모든 정수의 합을 반환하는 함수를 작성하라고 하죠
예를 들어, a = 3, b = 5가 주어진 경우
3 + 4 + 5 = 12를 반환하는 것을 이야기 합니다.
그리고 이 문제는 제한조건을 꼼꼼히 살펴 보아야 합니다.
a와 b가 같은 경우에 둘 중 아무 수나 반환
a와 b는 -10,000,000부터 10,000,000까지의 정수
a와 b의 대소 관계는 정해져 있지 않음
* 로직구상 *
두 정수 a와 b가 주어졌을 때,
a부터 b까지의 모든 정수를 합산해야 할것이고,
그러기 위해서 두 수 중 작은 수부터 큰 수까지 반복하면서 합을 구하면 됩니다.
두 수가 같은 경우에는 어느 수를 선택해도 결과는 같으므로 그 중 하나를 반환하면 됩니다.
두 정수 중 작은 수부터 큰 수까지 반복하면서 값을 더해야 하니까
for 문을 사용 해야하고 두 정수가 같은 경우에는
어느 수를 선택해도 되니까 그냥 그 값을 반환하면 됩니다.
* 코드구성 *
가장먼저, 함수를 선언 해주어야 하겠죠,
func solution(_ a: Int, _ b: Int) -> Int {
우선 두 개의 정수를 입력으로 받아서 정수를 반환하죠
입력된 두 정수는 a와 b가 됩니다
// a와 b 중 작은 수와 큰 수를 구합니다.
let start = min(a, b)
let end = max(a, b)
입력된 두 정수 a와 b 중에서 작은 수를 start에 저장하고, 큰 수를 end에 저장합니다.
이렇게 하면 두 정수의 대소 관계를 고려하지 않고 항상 작은 수부터 큰 수까지 반복할 수 있습니다.
// 두 정수가 같은 경우에는 그냥 그 값을 반환합니다.
if start == end {
return a
}
만약 두 정수가 같은 경우에는 어느 수를 반환해도 결과는 같습니다.
따라서 그냥 한 쪽 수를 반환해요 (제한조건을 고려한 내용입니다.)
// 합을 저장할 변수를 초기화합니다.
var sum = 0
합을 저장할 변수 sum을 초기화합니다.
이 변수는 반복문을 통해 두 정수 사이의 모든 정수의 합을 누적시켜요
// 작은 수부터 큰 수까지 반복하면서 합을 구합니다.
for num in start...end {
sum += num
}
start부터 end까지의 범위를 반복하면서 각 정수를 sum에 더하고
이를 통해 두 정수 사이의 모든 정수의 합을 구할 수 있게 되는 것이죠
// 합을 반환합니다.
return sum
}
반복문을 마치고 나면 sum에는 두 정수 사이의 모든 정수의 합이 저장되어 있으니 이 값을 반환해주면
우리는 두 정수 사이의 합을 구할 수 있게 되는 거죠.
'IOS > Swift-Algorithm (Programmers)' 카테고리의 다른 글
[Swift]Programmers - 서울에서 김서방 찾기 (0) | 2024.02.29 |
---|---|
[Swift] Programmers - 콜라츠 추측 (0) | 2024.02.28 |
[Swift] Programmers - 하샤드 수 (0) | 2024.02.23 |
[Swift]Programmers - 정수 내림차순으로 배치하기 (0) | 2024.02.22 |
[Swift] Programmers - 정수 제곱근 판별 (0) | 2024.02.21 |