본문 바로가기

iOS 앱 개발자 프로젝트/알고리즘 코드카타

[Algorithm] 길이에 따른 연산 (w/ Swift)

 

길이에 따른 연산
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

이 문제는 리스트의 길이에 따라 계산 방식이 달라지는 상황이야. 리스트에 있는 숫자들을 적절하게 처리해서 조건에 맞는 값을 반환하는 것이 목표지! 𓅰𓅭𓅰𓅯

 


 

 

1. 리스트 길이 확인하기

먼저 리스트의 길이에 따라 두 가지 조건을 처리해야 해.

  • 리스트의 길이가 11 이상이면 모든 원소의 합을 구해야 하고,
  • 리스트의 길이가 10 이하이면 모든 원소의 곱을 구해야 해.! 

여기서 조건에 따라 다른 계산 방식을 적용해야 하니까, 먼저 리스트의 길이를 체크하는 게 중요하다구.

 

if num_list.count >= 11 {
    // 리스트의 길이가 11 이상인 경우 합 계산
} else {
    // 리스트의 길이가 10 이하인 경우 곱 계산
}

 

 

 

2. 리스트의 모든 원소의 합 구하기

리스트의 길이가 11 이상이면 리스트에 있는 모든 숫자를 더해야 해.

이때 reduce 함수를 사용하면 편리하게 리스트의 원소들을 더할 수 있어.!

 

let sum = num_list.reduce(0, +)

 

 

reduce(0, +)는 리스트의 모든 숫자를 더한 결과를 반환해 줘. 초기값으로 0을 주고, 리스트의 각 원소를 차례로 더하는 방식이야.

 

 

3. 리스트의 모든 원소의 곱 구하기

 

리스트의 길이가 10 이하인 경우는 모든 숫자를 곱해야 해.

곱셈도 reduce 함수로 해결할 수 있어. 이번엔 초기값을 1로 설정하고 곱셈을 해주자.

 

let product = num_list.reduce(1, *)

 

 

reduce(1, *)는 리스트의 모든 숫자를 곱한 결과를 반환해줘. 1부터 시작해서 리스트의 각 원소를 차례대로 곱해 나가는 방식이지.

 

 

4. 결과 반환하기

 

이제 조건에 맞게 계산된 결과를 반환하면 돼. ( ‘Θ’)ノ

 

if num_list.count >= 11 {
    return num_list.reduce(0, +)  // 리스트의 합을 반환
} else {
    return num_list.reduce(1, *)  // 리스트의 곱을 반환
}

 

 


 

최종 코드

전체 코드는 아래와 같이 제출 완료!

 

func solution(_ num_list: [Int]) -> Int {
    if num_list.count >= 11 {
        return num_list.reduce(0, +)
    } else {
        return num_list.reduce(1, *)
    }
}

 

이 코드는 주어진 리스트의 길이에 따라 모든 숫자의 합이나 곱을 반환하는 거야.

리스트의 크기에 따라 계산을 다르게 하는 부분이 포인트랄까..