취업 및 이직 준비/코딩테스트 준비

프로그래머스 자바 (다음에 올 수) 코딩테스트 문제

code2772 2023. 3. 18. 14:22
728x90
반응형

처음 프로그래머스 코딩테스트를 연습하였다. 회사 코딩테스트를 본적이 있는데 너무 어려워서 공부의 필요성을 느꼈다.

 

문제 설명

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


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

입출력 예commonresult
[1, 2, 3, 4] 5
[2, 4, 8] 16

입출력 예 설명

입출력 예 #1

  • [1, 2, 3, 4]는 공차가 1인 등차수열이므로 다음에 올 수는 5이다.

입출력 예 #2

  • [2, 4, 8]은 공비가 2인 등비수열이므로 다음에 올 수는 16이다.

✔ 내가 처음 푼 방법

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

테스트는 정답이나 제출 결과 11점 예에 초점을 두고 풀어 공비/차가 다른 예가 나오면 전부 틀렸다. 처음에 간단하게 1씩 증가하고 2배씩 변경된다고 생각하였기 때문이다.

 

✔ 다시 푼 결과

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[2] - common[1]);
            
        }else {
           answer = common[common.length -1] * (common[1] / common[0]);
        }
        return answer;   
    }
}

common[n] - common[n-1] n은 어떤것이 있든 상관 없을 것이다 왜냐하면 앞과 뒤를 계산하면 동일하기 때문이다. 나누기도 마찬가지이다.

반응형