본문 바로가기
프로그래머스/[프로그래머스 - JAVA] Lv.0

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

by 코딩하는 흰둥이 2023. 3. 18.
반응형

 


  • 내 풀이
class Solution {
    public int solution(int[] common) {
        int answer = 0;
        
        int sum = common[1]-common[0];
        int multi = 0;
        for (int i = 1; i < common.length; i++) {

            if(common[i]-common[i-1] != sum){
                multi = common[i] / common[i-1];
                sum = 0;
            }

        }

        if (sum == 0){
            answer = common[common.length-1] * multi;
        }else if (multi == 0){
            answer = common[common.length-1] + sum;
        }
        
        return answer;
    }
}

테스트 8번 실패 소스

 

 

class Solution {
    public int solution(int[] common) {
        int answer = 0;
        
        int check = 0;
        // 첫번째 수와 세번째 수의 합 / 2는 두번째 수가 나온다
        // 1 , 2, 3   -> (1 + 3) / 2 = 2
        if ((common[0] + common[2]) / 2  == common[1]){
            check = (common[1] - common[0]);
            
			// 혹시 마지막 수와 마지막 전 수의 - 가 check 값과 같다면 등차수열이 아니다
            if (common[common.length-1] - common[common.length -2] == check){
                answer = common[common.length-1] + (common[1] - common[0]);
            }else {
                answer = common[common.length-1] * (common[common.length-1] - common[common.length -2]);
            }
            // // 첫번째 수와 세번째 수의 합 / 2가 두번째 수와 같이 않다면 등비수열이다.
        } else {
            answer = common[common.length-1] * (common[1] / common[0]);
        }

        return answer;
    }
}

변수 선언 없이 그대로 입력했더니.. 코드가 보기 너무 지저분해졌다

테스트가 통과되지 않는 이유를 찾다보니 예) 1 ,2 , 4인 경우 가 있는데 내가 짠 코드는 등차수열로 인식을 해서였다

위의 코드를 변수에 담아 깔끔하게 작성하신 분의 코드를 붙여 놓겠다

 

  • 다른 사람  풀이
class Solution {
    public int solution(int[] common) {
        int answer = 0;

        int x = common[1] - common[0];
        int y = common[2] - common[1];

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

        return answer;
    }
}

댓글