Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- recursion
- GRU
- Sort
- 그래프이론
- Java
- 파이썬
- 딥러닝
- hadoop2
- C언어
- 하둡2
- codingthematrix
- python
- tensorflow
- 하이브
- 코딩더매트릭스
- 주식분석
- HelloWorld
- scrapy
- RNN
- effective python
- graph
- hive
- collections
- 알고리즘
- 텐서플로
- 선형대수
- C
- NumPy
- LSTM
- yarn
Archives
- Today
- Total
EXCELSIOR
[Level 2] 최솟값 만들기 (getMinSum) 본문
1. 문제
자연수로 이루어진 길이가 같은 수열 A,B가 있습니다. 최솟값 만들기는 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱한 값을 누적하여 더합니다. 이러한 과정을 수열의 길이만큼 반복하여 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다.
예를 들어 A = [1, 2]
, B = [3, 4]
라면
1. A에서 1, B에서 4를 뽑아 곱하여 더합니다.
2. A에서 2, B에서 3을 뽑아 곱하여 더합니다.
수열의 길이만큼 반복하여 최솟값 10을 얻을 수 있으며, 이 10이 최솟값이 됩니다.
수열 A,B가 주어질 때, 최솟값을 반환해주는 getMinSum 함수를 완성하세요.
2. 풀이
1) 내가작성한 코드
sort 메소드와 reverse 메소드를 사용하여 해결했다.
def getMinSum(A,B): answer = 0 A.sort() B.reverse() for i in range(len(A)): answer += A[i]*B[i] return answer #아래 코드는 출력을 위한 테스트 코드입니다. print(getMinSum([1,2],[3,4]))
2) 다른 풀이
sorted메소드와 zip메소드를 통해 해결하였다.
def getMinSum(A, B): return sum([a * b for a, b in zip(sorted(A), sorted(B, reverse=True))]) # 아래 코드는 출력을 위한 테스트 코드입니다. print(getMinSum([1, 2], [3, 4]))
3. 알아둘 것
1) zip 함수 : zip함수는 list 여러개로 slice할 때 사용한다. 동일한 개수로 이루어진 자료형을 묶어주는 역할을 하는 함수다.
>>> list(zip([1, 2, 3], [4, 5, 6])) [(1, 4), (2, 5), (3, 6)] >>> list(zip([1, 2, 3], [4, 5, 6], [7, 8, 9])) [(1, 4, 7), (2, 5, 8), (3, 6, 9)] >>> list(zip("abc", "def")) [('a', 'd'), ('b', 'e'), ('c', 'f')]
'Python > 알고리즘_문제' 카테고리의 다른 글
[Level2] 행렬의 곱셈 (ProdcutMatrix) (0) | 2016.12.06 |
---|---|
[Level2] 2016년 (getDayName) (0) | 2016.11.27 |
[Level 1] 약수의 합 (sumDivisor) (0) | 2016.11.14 |
[Level1] 피보나치 수 (Fibonacci) (0) | 2016.11.11 |
[Level1] 행렬의 덧셈 (sumMatrix) (0) | 2016.11.07 |
Comments