본문 바로가기

알고리즘 문제풀이

프로그래머스 32. 내적

내가 작성하고 제출하면서도 '음.. 이건 1점짜리 ㅎ' 했는데 정말 1점 받았다 ㅋㅋㅋ

순서대로 곱해주고 더해주는거라 reduce함수도 사용해보고 싶었는데 생각이 잘 나지 않았고.. 당연히 사용한 사람 있겠지? 했는데

댓글이 엄청 달린 풀이가 있었다!

 

밑에 작성된 코드가 바로 그 코드였고 ㅎ

zip, map, reduce 함수들을 사용해서 간단한 코드를 만들었더라..

 

zip(a, b)

zip함수는 두 배열을 받아 각 배열의 요소를 튜플로 묶어 새로운 시퀀스를 만드는 함수이다.

예를들어 a = [1, 2, 3, 4]   b = [5, 6, 7, 8] 이면 zip(a, b)는 [(1, 5), (2, 6), (3, 7), (4, 8)] 이 된다.

 

.map(*)

map 함수는 시퀀스의 각 요소에 주어진 함수를 적용하여 새로운 배열을 생성한다.

연산자 '*' 사용하여 각 튜플의 요소를 곱한다

zip(a, b).map(*) 은 [1*5, 2*6, 3*7, 4*8] 즉 [5, 12, 21, 32] 가 된다

 

.reduce(0, +)

reduce 함수는 시퀀스의 모든 요소를 단일 값으로 결합한다.

초기값 0 부터 시작해 모든 요소를 더해준다.

[5, 12, 21, 32].reduce(0, +) 는 5 + 12 + 21 + 32 = 70 이 된다.