Altiora Petamus

두 개 뽑아서 더 하기 (프로그래머스) 본문

1day-1algorithm

두 개 뽑아서 더 하기 (프로그래머스)

Haril Song 2021. 2. 16. 10:05

문제 설명

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

제한 사항

  • numbers 의 길이는 2 이상 100 이하

  • 모든 수는 0 이상 100 이하

입출력 예

문제 풀이

  • 반복문에서 배열의 원소를 하나하나씩 꺼낸다.

  • 이중반복문에서 자기 자신을 제외하고 하나씩 더하게 한다.

  • 이전 인덱스를 더하는 것은 중복되어 의미없기 때문에, 항상 다음 인덱스를 더하게 한다.

  • 이미 배열에 존재하면 넘어가고 없으면 배열에 담는다. 또는 Set을 사용하여 중복을 제거한다.

  • 오름차순으로 정렬하여 리턴한다.

JavaScript

function solution(numbers) {
  let temp = []; // 더한 값을 담을 배열 선언

  for (let i = 0; i < numbers.length; i++) { // 원소들을 하나씩 꺼내기
    for (let j = i + 1; j < numbers.length; j++) { // i 다음 인덱스부터 나열
      let addNumber = numbers[i] + numbers[j];
      temp.push(addNumber); // 모두 temp에 담는다.
    }
  }

    // Set 자료구조는 중복을 허용하지 않기때문에 같은 값이 있다면 항상 마지막에 들어온 값만 남긴다.
  const answer = [...new Set(temp)]; // spread로 전개한 후 다시 담기
  return answer.sort((a, b) => a - b); // Arrow fn, 오름차순 정렬
}

Python

def solution(numbers):
    answer = []

    for i in range(len(numbers) - 1): # 0부터 numbers-1 인덱스까지
        for j in numbers[i + 1:]: # i+1 인덱스부터 끝까지
            answer.append(numbers[i] + j) # append는 배열의 마지막에 값을 넣는다
    return sorted(list(set(answer))) # set으로 변환하여 중복 제거 후, 리스트에 담고 정렬

'1day-1algorithm' 카테고리의 다른 글

로프  (0) 2021.02.23
동전 0  (0) 2021.02.20
ATM  (0) 2021.02.19
설탕 배달  (0) 2021.02.19
구명보트  (0) 2021.02.17