[TIL][프로그래머스/Swift] 다음에 올 숫자

Eden·약 16시간 전
3

TIL

목록 보기
41/41
post-thumbnail


GPT는 바보야
코테 레지고

문제 설명

등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성하는 문제였다.

제한사항

  • 2 < common의 길이 < 1,000
  • -1,000 < common의 원소 < 2,000
  • common의 원소는 모두 정수이며, 항상 등차수열 또는 등비수열로 주어진다. 등비수열인 경우 공비는 0이 아닌 정수이다.

입출력 예

  • common = [1, 2, 3, 4]return 5
  • common = [2, 4, 8]return 16

최종 코드

import Foundation

func solution(_ common:[Int]) -> Int {
    let difference = common[1] - common[0]
    
    if common[2] - common[1] == difference {
        return common.last! + difference
    }
    
    let ratio = common[1] / common[0]
    if common[2] / common[1] == ratio {
        return common.last! * ratio
    }
    
    return 0
} 
  • 등차수열 판별: 먼저 common[1] - common[0]으로 첫 번째 항 간의 차이를 구하고, 이 차이를 이용해 등차수열인지 확인한다. 등차수열이라면 마지막 원소에 차이를 더한 값을 반환한다.
  • 등비수열 판별: 등차수열이 아니면, 첫 번째 두 항의 비율을 구하고 이를 이용해 등비수열인지 확인한다. 등비수열이라면 마지막 원소에 공비를 곱한 값을 반환한다.

배운 점

  • 실수한 점: 초기에 등비수열을 처리할 때, 음수 값에 대한 처리를 제대로 하지 않았다. 이로 인해 일부 테스트 케이스에서 실패가 발생했다.
  • 해결 방법: 등비수열을 판별할 때 음수 값도 올바르게 처리하도록 수정하였다.

느낀 점

  • 조건문 활용의 중요성: 수학적 연산을 다룰 때 조건문을 통해 edge case를 잘 처리하는 것이 중요하다는 점을 다시 한 번 깨달았다.
  • 문제 해결의 체계적인 접근: 문제를 등차수열과 등비수열로 나누어 체계적으로 접근함으로써 보다 쉽게 해결할 수 있었다.
profile
Just living the daydream, one moment at a time.
post-custom-banner

2개의 댓글

comment-user-thumbnail
약 5시간 전

G무룩

1개의 답글