본문 바로가기

프로그래머스 코딩테스트 연습 Lv1

프로그래머스 코딩테스트 연습- 모든문제 Lv1 [내적]

[문제 설명]

길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해 주세요. a와 b의 내적은 a[0]*b[0] + a[1]*b[1]+ ...... + a[n-1]b[n-1] 입니다.

 

[제한사항]

- a, b 의 길이는 1 이상 1000 이하.

- a, b 의 모든 수는 -1000 이상 1000이하.

 

[내 풀이]

1. 내적이 뭔지 몰라서 찾아봄. 이런저런 뜻이있고 벡터에서 곱하기의 의미로 썻던게 기억났음.

2. 그냥 두 배열을 0부터 최대치까지 곱하고 더하는 함수를 짜면 되는듯. 

*temp는 필요없다.

나는 많이 틀릴테니까 주피터에서 실행해 보고 출력이 되면 프로그래머스에서 실행한다.

1점 받았음.

다른사람 풀이 보니까 미쳤다. zip을 주로 사용하는거 같은데 zip에 대해 공부 해야 겠다고 생각했다. 그전에 반복문으로 처리 했지만 내 코드보다 깔끔한 코드로 다시 재작성 해보았다.

 

새로운 배열 c 를 만들고 a[i]*b[i]의 결과를 c배열에 순서대로 집어 넣는다. 그후 return에 배열c의 모든 값으 합인 sum(c)를 제출. 풀이 개념은 나와 똑같다. 하지만 더 많은 고민을 한것이 보이는 코드.

 

ZIP

여러개의 iterable한 객체를 인자로 받고 각 객체가 담고있는 원소를 튜플의 형태로 접근할 수 있는 iterator를 반환.

그니까.. 두 배열이 있을때 그 배열들의 첫번째 값들로 action을 하고 두번쨰 값들로 Action을 하고 ...... 할때 이걸 쓰면 좋은거 같음. 지금 위 문제가 딱 이게 필요한것 같습니다. 다시 zip으로 이를 풀어 보자면.

이건 그냥 짜본거고 더 간단한 형태가 있다.

더 간단한 형태가 있으므로 그 방법으로 다시 풀어보았다. zip에 대해 먼저 공부하지 않고는 이 코드 알기란 불가능.

반복문을 축약 작성해서 작성하고 x*y 값으로 배열이 구성됨. 그후 sum 을통해 다 더하고 리턴한건데 공부할때니까 이런 깔끔한 코드도 공부 해야겠다.