본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - 다음에 올 숫자

by nam_ji 2024. 10. 1.

다음에 올 숫자 - LV.0

문제

  • 정수 배열 common이 매개변수로 주어집니다.
  • 등차수열 혹은 등비수열 common이 매개변수로 주어질 때,
  • 마지막 원소 다음으로 올 숫자를 출력하는 문제입니다.


테스트 (인텔리제이)

  • 먼저 common의 원소를 보면 등차수열은 각 원소의 차수가 같습니다.
    (1,2,3,4 로 예를 들면 2 -1 = 1, 3 - 2 = 1, 4 - 3 = 1)
  • 그리고 등비수열을 보면 각 원소의 차수가 다르다는 것을 확인할 수 있고 3번쨰 원소까지만 확인하면 마지막 다음 값을 알 수 있다는 것을 확인했습니다.
  • 그래서 if문으로 두 번째 원소에서 첫 번째 원소를 뺀 값과 세 번째 원소에서 두 번째 원소를 뺀 값이 같으면 등차수열임을 확인할 수 있고 그게 아니라면 등비수열임을 확인할 수 있습니다.
  • 첫 번째 if문 로직에는 등차수열이기 때문에 common의 마지막 원소에 n+1 - n 값을 더해주면 되고
  • 두 번째 else문 로직에는 등비수열이기 때문에 common의 마지막 원소에 n+1 / n 값을 곱해주면 됩니다.
package com.namji.codingtest;

public class 다음에_올_숫자 {
  public static void main(String[] args) {
    /*
    정수 배열 common이 매개변수로 주어집니다.
    등차수열 혹은 등비수열 common이 매개변수로 주어질 때,
    마지막 원소 다음으로 올 숫자를 출력하는 문제입니다.

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

    입출력 예
    common	      result
    [1, 2, 3, 4]	5
    [2, 4, 8]	    16
    [-3, -6, -9]  -12
    [2, -4, 8]    -16
    [5, 15, 45]   135

    입출력 설명
    #1
    [1, 2, 3, 4]는 공차가 1인 등차수열이므로 다음에 올 수는 5이다.
    #2
    [2, 4, 8]은 공비가 2인 등비수열이므로 다음에 올 수는 16이다.
     */
    int[] common = {2, -4, 8};
    int answer = 0;

    if (common[1] - common[0] == common[2] - common[1]) {
      answer = common[common.length - 1] + (common[1] - common[0]);
    } else {
      answer = common[common.length - 1] * (common[1] / common[0]);
    }

    System.out.println(answer);
  }
}

프로그래머스 코드

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