알고리즘/코드워

[python]SpeedCode #2 - Array Madness

(ㅇㅅㅎ) 2020. 4. 28. 21:20
728x90
반응형

https://www.codewars.com/kata/56ff6a70e1a63ccdfa0001b1/train/python

 

Codewars: Train your coding skills

Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.

www.codewars.com

이 문제는 코드 제작보다 문제를 이해하는 것이 더 어려웠습니다.

 

문제 풀이를 보시려면 더보기를 클릭하시면 됩니다.

더보기

SpeedCode #2 - Array Madness

우선 이 문제를 해석해 보면

길이 >=1의 두 정수 배열 a, b를 주어진다면, a의 각 원소의 제곱합이 b의 각 원소의 제곱합보다 엄격히 클 경우 true를 반환하는 프로그램을 만든다.  - 파파고 - 

 

저는 제곱합에 대해서 잘 모르기 때문에 검색을 해보았습니다.

 

제곱합(sum of squares)은 표본 내의 각 사례의 변인 값과 평균 사이의 편차를 제곱한 값들의 총합으로,

표본 내의 변산성(개인차)의 총량을 나타내는 수치이다.

 - 위키백과 - 

 

원래의 값에서 평균을 빼서 나온 편차값들을 제곱하여 모두 더한 값이다.

- 네이버 지식백과 - 

 

이것에 맞춰서 코드를 제작해 보았지만 문제가 잘 풀리지 않았습니다. 문제를 다시 살펴보니 sum of the cubes라는 말도 파파고가 제곱합이라고 번역을 했었습니다. 정확한 뜻으로 sum of cubes는 세제곱의 합을 의미합니다. 예를 들어서 [1, 2, 3]의 sum of cubes는 아래의 그림과 같습니다.

 

이것을 보니 sum of squares의 뜻도 통계학에서의 제곱합이 아닌 제곱들의 합이 아닐까라는 생각이 들었습니다.

이것을 기반으로 코드를 작성하니 문제를 풀 수 있었습니다.

 

전체 코드

# My Code
def array_madness(a, b):
    # 2 제곱 list 생성
    a_tmp = [i * i for i in a]
    
    # 3 제곱 list 생성
    b_tmp = [i * i * i for i in b]
    
    # 2 제곱의 합과 3 제곱 합 비교 하여 2제곱이 크면 True 반환 아니면 False 반환
    if sum(a_tmp) > sum(b_tmp):
        return True
    else:
        return False
    
    # 한줄로 표현할 때
    return True if sum([i * for i in a]) > sum([i * i * for i in b]) else False
 
if __name__=='__main__':
    print(array_madness([456], [123]))
    print(array_madness([123], [456]))
 

결론 : 영어를 공부하자.

 

반응형

'알고리즘 > 코드워' 카테고리의 다른 글

[python]L1: Bartender, drinks!  (0) 2020.05.04
[python]Binomial Expansion  (0) 2020.05.01
[python]Polish alphabet  (0) 2020.04.26
[python]Largest 5 digit number in a series  (0) 2020.04.25
[python]Sudoku Solution Validator  (0) 2020.04.24