2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[Swift]Programmers - 두 정수 사이의 합

2024. 2. 27. 10:07ㆍIOS/Swift-Algorithm (Programmers)
SMALL

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에는 두 정수 사이의 모든 정수의 합이 저장되어 있으니 이 값을 반환해주면

우리는 두 정수 사이의 합을 구할 수 있게 되는 거죠.

728x90