기타/알고리즘

프로그래머스 코딩테스트 연습 - 다음에 올 숫자 with Kotlin

개발짜 2022. 12. 8. 00:55

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/120924

 

프로그래머스

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

programmers.co.kr

 

문제설명

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

 

제한 사항

  • 2 < common의 길이 < 1,000
  • -1,000 < common의 원소 < 2,000
  • 등차수열 혹은 등비수열이 아닌 경우는 없습니다.
  • 공비가 0인 경우는 없습니다.

 

풀이

1. 첫번째 숫자, 두번째 숫자, 세번째 숫자의 차이를 각 변수에 저장

2. 첫번째 숫자와 두번째 숫자의 차이와 두번째 숫자와 세번째 숫자의 차이가 같을 경우 등차수열로 보고 아니면 등비수열로 본다.

3. 등차수열일 경우 (첫번째 숫자 + 공차 * 첫번째 숫자와 마지막 숫자의 거리값)

4. 등비수열일 경우 (common의 마지막 숫자 * 공비) 

 

class Solution {
    fun solution(common: IntArray): Int {
        var answer: Int = 0
        val oneNum = common[0]
        val twoNum = common[1]
        val threeNum = common[2]
        val firstDiff = twoNum - oneNum
        val secondDiff = threeNum - twoNum
        if(firstDiff == secondDiff) {
            answer = oneNum + (firstDiff * common.size)
        } else {
            var diff = secondDiff / firstDiff
            answer = common.last() * diff
        }
        return answer
    }
}