코틀린(Kotlin)/프로그래머스

[프로그래머스/코틀린(Kotlin)] 내적

초보왕보초 2023. 11. 6. 20:10
728x90

a와 b의 내적을 리턴하기

예시)

 

풀이

  • for문을 사용해서 반복시키기

 

제출 코드

(코드 해석해 보기)

내적이라는 걸 처음 들어봐서 당황했으나,

예시와 공식이 나와있어서 다른 문제들에 비해서 무난하게 for문을 활용하여 풀었다

for문을 이용해서 a배열의 사이즈만큼 반복시키고 내적을 구하는 공식을 대입해 줬다

 

 


 

 

상당히 어려울 줄 알았는데, 생각보다 일찍 해결해서 다른 사람들의 풀이를 봤는데

zip, mapIndexed, indices라는 것들을 알게 되었다

 

zip

zip은 Index 순서가 동일한, 서로 연관된 리스트를 더욱 쉽게 사용한다

a.zip(b)

a와 b리스트의 값을 직접 묶기보단, 두 리스트값을 이용하여 새로운 값을 만들 때 사용된다

a zip b

List<Pair<T,T>>로 반환되며, 두 리스트의 값을  온전히 묶어서 관리할 때 사용한다

(Pair 타입이므로 반환 시 first와 second를 사용하여 각각 접근할 수 있다)

활용한 답을 보면, return a.zip(b).map{ it.first * it.second}.sum() 이 끝일 정도로 코드가 줄여진다

 

 

mapIndexed

map()과 동일하지만 람다함수, 인덱스까지 전달해 주는 함수이다

a.mapIndexed{ index , it -> it * b[index] }.sum() 만 쓰면 위 문제의 답이 나올 정도로 간편하다

 

 

indices

indices는 컬렉션 타입의 인덱스 범위를 반환한다

예를 들어, a에 데이터가 5개 있다면 a.indices는 0..4를 반환한다

for(i in a.indices) = for (i in 0..4) = for (i in 0 until a.size)인 셈이다

728x90