본문 바로가기
코딩테스트/프로그래머스 기초

[코딩테스트 Lv.0] 마지막 두 원소

by 블루데이제이 2025. 3. 31.
728x90
반응형
문제 설명

정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.

제한사항
2 ≤ num_list의 길이 ≤ 10
1 ≤ num_list의 원소 ≤ 9
입출력 예
num_list	result
[2, 1, 6]	[2, 1, 6, 5]
[5, 2, 1, 7, 5]	[5, 2, 1, 7, 5, 10
입출력 설명
입출력 예 #1
마지막 원소인 6이 그전 원소인 1보다 크기 때문에 6 - 1인 5를 추가해 return합니다.

입출력 예 #2
마지막 원소인 5가 그전 원소인 7보다 크지 않기 때문에 5의 두 배인 10을 추가해 return합니다.

내 풀이
Java
class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = new int[num_list.length + 1];
        
        int i = 0;
        for(i = 0; i < num_list.length; i++){
            answer[i] = num_list[i];
        }
        
        
        if(answer[i - 1] > answer[i - 2]){
            answer[i] = answer[i - 1] - answer[i - 2];
        }else{
            answer[i] = answer[i - 1] << 1;
        }
        
        return answer;
    }
}
C
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// num_list_len은 배열 num_list의 길이입니다.
int* solution(int num_list[], size_t num_list_len) {
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    int* answer = (int*)malloc(sizeof(int) * num_list_len + 1);
    int i;
    for(i = 0; i < num_list_len; i++){
        answer[i] = num_list[i];
    }
    
    if(answer[i - 1] > answer[i - 2]){
        answer[i] = answer[i - 1] - answer[i - 2];
    }else{
        answer[i] = answer[i - 1] << 1;
    }
    return answer;
}
Python
def solution(num_list):
    answer = [i for i in num_list]
    
    if answer[len(answer) - 1] > answer[len(answer) - 2]:
        answer.append(answer[len(answer) - 1] - answer[len(answer) - 2])
    else:
        answer.append(answer[len(answer) - 1] * 2)
    
    return answer

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

728x90
반응형