[프로그래머스/Java] Lv.0 다음에 올 숫자

febCho·2024년 6월 18일
0

코딩테스트

목록 보기
224/253
post-thumbnail

문제

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

- 제한사항

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

풀이

처음에는 등차수열 공식 a +(n - 1)d와 등비수열 공식 ar^(n-1)을 이용해 계산하려고 했다. 그런데 주어지는 수열 common이 등차인지 등비인지 체크하는 과정에서 더 쉬운 방법을 발견했다.

우선 common의 길이는 3 이상이다. 이에 따라 배열 인덱스 0, 1, 2를 활용해 등차인지, 등비인지 판단할 수 있다.

if문으로 분기한 후, 등차수열이라면 공차(d)를 구해야 했다. 이때 알려진 공식을 이용하는 대신 common[1] - common[0] 해주었다. 그렇게 배열 common의 마지막 원소에 공차를 더해줌으로써 정답을 return했다.

그리고 등비수열의 경우 공비(r)을 구하기 위해 common[1] / common[0] 해주었다. 그리고 마지막 원소에 공비를 곱해줌으로써 정답을 return 했다.

반복되는 코드가 많아 가독성이 좋지 않긴 해도 누구나 이해할 수 있는 코드이기 때문에 좋은 코드라는 생각이 들었다.

class Solution {
    public int solution(int[] common) {
        int answer = 0;
        
        if(common[1] - common[0] == common[2] - common[1]){
            int d = common[1] - common[0];
            answer = common[common.length - 1] + d;
        }else if(common[1] / common[0] == common[2] / common[1]){
            int r = common[1] / common[0];
            answer = common[common.length - 1] * r;
        }
        
        return answer;
    }
}

결과

profile
Done is better than perfect.

0개의 댓글