본문 바로가기
코딩 테스트/[JAVA] programmers 코딩 테스트 연습

[No.7] 두 개 뽑아서 더하기 / 프로그래머스 코딩 테스트 연습 JAVA

by M개발자 2021. 6. 5.
반응형

두 개 뽑아서 더하기


문제 설명

 

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.


예시

 

numbers result
[2,1,3,4,1] [2,3,4,5,6,7]
[5,0,2,7] [2,5,7,9,12

코드 해석 및 전체 코드

 

해석

//1. 인덱스 + 인덱스 
//2. 앞 번호와 같을 시 continue
//3. 정렬

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int* solution(int numbers[], size_t numbers_len) {
    
    int* array = (int*)malloc(sizeof(int) * 1000);
    
    for(int i = 0; i < 1000;i++){
        array[i] = 0;
    }
    int k = 0;
    for(int i = 0; i < numbers_len; i++){
        for(int j = i+1; j <numbers_len; j++){
            array[k] = numbers[i] + numbers[j];
            int num = k;
            for(int z = 0; z < num; z++){
                if(array[num] == array[z]) {
                    k--;
                }
            }
            k++; 
        }
    }
    
    int* answer = (int*)malloc(sizeof(int) * k);
    for(int i = 0; i < k; i++)
        answer[i] = array[i];
    free(array);
    for(int i = 0; i < k - 1; i++){
        for(int j = 0; j < k - 1 - i; j++){
            if(answer[j] > answer[j+1]) {
              int temp = answer[j];
                answer[j] = answer[j+1];
                answer[j+1] = temp;
            }
        
        }
    }
    return answer;
}

github

programmers

반응형

댓글