개발 창고/Algorithm

[프로그래머스] 마지막 두 원소 - JAVA

로이제로 2024. 1. 6. 23:58
반응형


문제

https://school.programmers.co.kr/learn/courses/30/lessons/181927?language=java

 

프로그래머스

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

programmers.co.kr

문제 내용은 지적 재산 보호 차원에서 가져오지 않고 풀이만 공유드리도록 하겠습니다.


풀이

 제 풀이가 무조건적으로 맞는 것도 최적의 답변도 아니지만, 이런 풀이도 있다는 차원에서 작성해 보며, 좀 더 나은 방법이 있다면 이야기해 주셔도 도움 될 것 같습니다.

class Solution {
    public int[] solution(int[] num_list) {
    	// 1. 결과 반환을 위한 Array 선언
        // 전달 받은 array에 1개가 추가되므로 전체 array 개수를 num_list의 개수 +1로 선언해줍니다.
        int[] answer = new int[num_list.length + 1];
        
        // 2. 기존 데이터 추가
        // 전달받은 num_list를 answer array에 추가해줍니다.
        for(int i = 0; i < num_list.length; i++){
            answer[i] = num_list[i];
        }
        
        // 3. 뒤에서 두 번째 값을 a, 뒤에서 첫 번째 값을 b로 선언해줍니다.
        int a = num_list[num_list.length - 2];
        int b = num_list[num_list.length - 1];
        
        // 4. 뒤에서 두 번째 값이 뒤에서 첫 번째 값보다 작으면, b - a
        // 그 외에  경우에 b *2를 answer의 마지막 값으로 추가해줍니다.
        if(a < b)   answer[answer.length - 1] = b - a;
        else        answer[answer.length - 1] = b * 2;
        
        // 5. 반환합니다.
        return answer;
    }
}

코드 실행 결과
제출 결과

반응형