본문 바로가기
메모장/코딩테스트 준비

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

by code2772 2023. 3. 18.

[ 목차 ]

    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은 어떤것이 있든 상관 없을 것이다 왜냐하면 앞과 뒤를 계산하면 동일하기 때문이다. 나누기도 마찬가지이다.

    반응형