프로그래머스/입문

[프로그래머스 입문 / 파이썬] 배열 두 배 만들기

m으스으m 2024. 7. 22. 19:41

실습 코드 :

https://colab.research.google.com/drive/1sXfHgaKUdd5n3FbPUAU1wJ1YUDwye354?usp=sharing

 

[프로그래머스 입문 / 파이썬] 배열 두 배 만들기.ipynb

Colab notebook

colab.research.google.com

 

문제 설명

정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.

제한사항

  • -10,000 <= numbers의 원소 <= 10,000
  • 1 <= numbers의 길이 <= 1,000

입력 예시

numbers result
[1, 2, 3, 4, 5] [2, 4, 6, 8, 10]
[1, 2, 100, -99, 1, 2, 3] [2, 4, 200, -198, 2, 4, 6]

입력 예시 설명

  • 입력 예 #1: [1, 2, 3, 4, 5]의 각 원소에 두배를 한 배열 [2, 4, 6, 8, 10]을 return합니다.
  • 입력 예 #2: [1, 2, 100, -99, 1, 2, 3]의 각 원소에 두배를 한 배열 [2, 4, 200, -198, 2, 4, 6]을 return합니다.

문제 풀이 설명

주어진 배열의 각 원소를 두배로 만든 배열을 반환하는 문제입니다. 이를 해결하기 위해 다음의 단계를 따릅니다:

  1. 입력 배열 numbers를 순회하면서 각 원소를 2배로 만듭니다.
  2. 2배로 만든 값을 새로운 배열에 추가합니다.
  3. 새로운 배열을 반환합니다.

코드 구현

def solution(numbers):
    # 각 원소를 두배로 만들어 새로운 배열을 생성
    result = [number * 2 for number in numbers]
    return result

# 테스트 예시
print(solution([1, 2, 3, 4, 5]))  # 결과: [2, 4, 6, 8, 10]
print(solution([1, 2, 100, -99, 1, 2, 3]))  # 결과: [2, 4, 200, -198, 2, 4, 6]

풀이법 2: map 함수 사용

파이썬의 map 함수를 사용하여 각 원소를 두배로 만드는 방법도 있습니다.

def solution(numbers):
    # map 함수를 사용하여 각 원소를 두배로 만듦
    return list(map(lambda x: x * 2, numbers))

# 테스트 예시
print(solution([1, 2, 3, 4, 5]))  # 결과: [2, 4, 6, 8, 10]
print(solution([1, 2, 100, -99, 1, 2, 3]))  # 결과: [2, 4, 200, -198, 2, 4, 6]

풀이법 3: numpy 라이브러리 사용

numpy 라이브러리를 사용하면 배열 연산을 쉽게 할 수 있습니다.

import numpy as np

def solution(numbers):
    # numpy 배열을 사용하여 각 원소를 두배로 만듦
    return list(np.array(numbers) * 2)

# 테스트 예시
print(solution([1, 2, 3, 4, 5]))  # 결과: [2, 4, 6, 8, 10]
print(solution([1, 2, 100, -99, 1, 2, 3]))  # 결과: [2, 4, 200, -198, 2, 4, 6]

계산 복잡도

  1. 첫 번째 방법: O(n) - 배열을 한 번 순회하며 각 원소를 두배로 만듭니다.
  2. 두 번째 방법: O(n) - map 함수를 사용하여 배열을 순회합니다.
  3. 세 번째 방법: O(n) - numpy 배열을 사용하여 연산을 수행합니다.

태그

  • #프로그래머스
  • #파이썬
  • #코딩테스트
  • #알고리즘
  • #배열
  • #기초문제
  • #입문문제
  • #리스트컴프리헨션
  • #함수형프로그래밍
  • #numpy