본문 바로가기

코딩테스트 스터디

코딩테스트 연습 - 다음에 올 숫자 (JAVA)

프로그래머스 코딩테스트 입문 0단계 문제입니다

https://school.programmers.co.kr/learn/courses/30/lessons/120924 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📢 문제 설명

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

 

⭕ 정답 코드

class Solution {
    public int solution(int[] common) {
        int answer = 0;
        int d = 0; //공차, 공비
        
        if(common[2]-common[1] == common[1]-common[0]){
            //등차수열인 경우
            d = common[2]-common[1];
            answer = common[common.length-1]+d;
        }else{
            //등비수열인 경우
            d = common[2]/common[1];
            answer = common[common.length-1]*d;
        }
        
        return answer;
    }
}

 

⚠️ 직접 풀어본 처음 풀이

🔗 코드

class Solution {
    public int solution(int[] common) {
        int answer = 0;
        int d = 0; //공차, 공비
        
        if(common[2]-common[1] == common[1]-common[0]){
            //등차수열인 경우
            d = common[2]-common[1];
            answer = common[common.length-1]+d;
        }else{
            //등비수열인 경우
            d = common[2]/common[1];
            answer = common[common.length-1]*d;
        }
        
        return answer;
    }
}

*정답 코드와 같은 코드이다

 

🔍 해설

1. 문제의 제한 조건을 확인하면 common은 무조건 3개 이상의 요소를 가진다는 것을 알 수 있다

2. 3번째와 2번째 요소의 차, 2번째와 1번째 요소의 차가 같다면

3. 등차수열로 판단하여

4. 마지막 요소에 그 차를 더해준다

5. 아니라면 등비수열로 판단하여

6. 마지막 요소에 3번째를 2번째 요소로 나눈 값을 곱해준다

✅ 개선할 점 

d 변수를 사용하지 않으면 더 짧게 코드를 작성할 수 있다

그렇지만 가독성을 위해 사용하고자 한다