https://www.codewars.com/kata/56ff6a70e1a63ccdfa0001b1/train/python
이 문제는 코드 제작보다 문제를 이해하는 것이 더 어려웠습니다.
문제 풀이를 보시려면 더보기를 클릭하시면 됩니다.
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 * i for i in a]) > sum([i * i * i for i in b]) else False
if __name__=='__main__':
print(array_madness([4, 5, 6], [1, 2, 3]))
print(array_madness([1, 2, 3], [4, 5, 6]))
|
결론 : 영어를 공부하자.
'알고리즘 > 코드워' 카테고리의 다른 글
[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 |