[python/java] 프로그래머스 월간 코드 챌린지 시즌1 두 개 뽑아서 더하기

유콩·2021년 10월 29일
0

코딩테스트

목록 보기
14/25
post-thumbnail

📋 문제

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

제한사항
numbers의 길이는 2 이상 100 이하입니다.
numbers의 모든 수는 0 이상 100 이하입니다.
입출력 예
numbers result
[2,1,3,4,1][2,3,4,5,6,7]
[5,0,2,7][2,5,7,9,12]
입출력 예 설명
입출력 예 #1

2 = 1 + 1 입니다. (1이 numbers에 두 개 있습니다.)
3 = 2 + 1 입니다.
4 = 1 + 3 입니다.
5 = 1 + 4 = 2 + 3 입니다.
6 = 2 + 4 입니다.
7 = 3 + 4 입니다.
따라서 [2,3,4,5,6,7] 을 return 해야 합니다.
입출력 예 #2

2 = 0 + 2 입니다.
5 = 5 + 0 입니다.
7 = 0 + 7 = 5 + 2 입니다.
9 = 2 + 7 입니다.
12 = 5 + 7 입니다.
따라서 [2,5,7,9,12] 를 return 해야 합니다.

🐍 이전 풀이(2021.06.15)

def solution(numbers):
    answer = []
    for i in range(len(numbers)):
        for j in range(i + 1, len(numbers)):
            sum_num = numbers[i] + numbers[j]
            
            if sum_num not in answer:
                answer.append(sum_num)
                
    answer.sort()
    return answer

🐍 python 풀이(2021.10.29)

def solution(numbers):
    answer = []
    
    for i in range(len(numbers)):
        for j in range(i + 1, len(numbers)):
            sum_num = numbers[i] + numbers[j]
            answer.append(sum_num)
    return sorted(list(set(answer)))

☕ JAVA 풀이(2021.10.29)

java에는 python의 set과 같은 자료형이 없는거같아서 answer 배열에 저장하려는 값이 존재하는지 확인하는 과정을 추가했다. 총 몇개가 추가될지 몰라 ArrayList로 변수를 생성하고 Arrays의 sort함수를 사용하여 오름차순 정렬하기 위해 배열로 바꾸는 작업도 추가했다. 확실히 python이 코드짜기는 쉬운데 이게 진짜 python이 쉬운건지 내가 java를 몰라서 그런건지는 모르겠다...ㅠㅠ

import java.util.Arrays;
import java.util.ArrayList;

class Solution {
    public int[] solution(int[] numbers) {
        ArrayList<Integer> answer_list = new ArrayList<Integer>();
        int sum;
        
        for (int i = 0; i < numbers.length; i++) {
            for (int j = i + 1; j < numbers.length; j++) {
                sum = numbers[i] + numbers[j];
                if (!answer_list.contains(sum)) {
                    answer_list.add(sum);
                }
            }
        }
        int[] answer = new int[answer_list.size()];
        int index = 0;
        for (int num: answer_list) {
            answer[index++] = num;
        }
        
        Arrays.sort(answer);
        return answer;
    }
}


☕ JAVA 알게된 것

  1. Array와 ArrayList
  • python의 list처럼 여러 개의 값을 저장하는 객체가 존재한다.
  • JAVA의 Array는 C언어처럼 저장할 값들의 타입과 배열 크기를 지정하여 선언해야 한다.
  • 지정한 배열의 크기보다 큰 값을 조회하면 에러가 발생한다. -> 메모리에 지정한 크기만큼만 배열을 할당한다.
  • 위의 문제와 같이 배열의 크기를 알 수 없는 경우 ArrayList를 사용한다.
  • Array와 ArrayList의 차이점은 지정된 크기보다 큰 값을 조회할 수 있냐 없냐의 차이뿐이다.
  • ArrayList는 내부적으로는 디폴트크기 10의 Array로 구성되어있으며 지정한 크기보다 큰 값을 호출하면 현재 크기보다 1.5배 크기를 늘린다.

0개의 댓글

관련 채용 정보