배열 두 배 만들기

2024. 7. 3. 18:00코딩테스트 입문

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명
정수 배열 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합니다.

문제의 의도는 간단합니다. 각각의 요소를 2배로 늘리라는 거죠.

보통 이런 문제는 반복문을 사용해서 문제를 풉니다. 파이썬 같은 경우는 리스트 컴프리헨션을 사용해서 문제를 풀기도 하죠.

저는 파이썬을 활용한 1) 리스트 컴프리헨션과 2) Numpy 사용, 2가지 방법으로 풀어보겠습니다.

 

1) 리스트 컴프리헨션

def solution(numbers):
    # numbers에서 요소를 num으로 하나씩 뽑아
    # 2 * num을 answer에 저장한다.
    answer = [2 * num for num in numbers]
    return answer

numbers 배열을 in 연산을 통해서 num을 하나씩 꺼낸 뒤, 꺼낸 num에 2를 곱해서 answer에 저장하는 방법입니다.

가장 대표적인 답안이라고 볼 수 있습니다.

 

2) Numpy 사용

import numpy as np
def solution(numbers):
    # 넘파이 배열
    answer = (np.array(numbers) * 2).tolist()
    return answer

Numpy 배열들은 기본적으로 각각의 요소에 식을 적용합니다.

그래스 Numpy 배열간의 덧셈도 각각 이루어지는 게 이런 특징때문이죠.

이 특징을 사용해서, Numpy 배열에 *2를 한다면 알아서 값이 2배로 증가합니다.

answer은 리스트 형태여야 하므로, tolist()을 사용해서 리스트로 바꿔주면 끝납니다.

 

이런 문제는 너무 간단한 문제들이라 코딩테스트에 나오지는 않을 거 같네요.

'코딩테스트 입문' 카테고리의 다른 글

중앙값 구하기  (0) 2024.07.05
나머지 구하기  (0) 2024.07.04
분수의 덧셈  (0) 2024.07.02
숫자 비교하기  (0) 2024.07.01
두 수의 나눗셈  (0) 2024.06.30