2024. 3. 21. 09:52, ๐กAlgorithm
๋ฐ์ํ
๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/70128
์ฑ๊ณต ์ฝ๋
class Solution {
fun solution(a: IntArray, b: IntArray): Int {
val length = a.size - 1
var sum = 0
for(i in 0 .. length){
sum += a[i] * b[i]
}
return sum
}
}
์ค๋ช
- val length = a.size - 1
a์ b๋ ๊ฐ์ ๊ธธ์ด๋ฅผ ๊ฐ์ง๋ฏ๋ก, ๊ธธ์ด๋ฅผ ์ฐพ๊ธฐ์ํด .size ํ๋กํผํฐ๋ฅผ ์ด์ฉํ๋ค.
-1์ ํ ์ด์ ๋ for๋ฌธ์ ๋๋ฆด ๋ size๋งํผ ์ฐพ์ผ๋ฉด ๋ง์ง๋ง ์์น์ ๋ฐฐ์ด์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. (์ธ๋ฑ์ค๋ 0๋ถํฐ ์์)
-1์ ํ์ง ์๊ณ for๋ฌธ์์ .. ๋์ until์ ์จ๋ ๋ฌด๋ฐฉํ๋ค. - for(i in 0 .. length) { sum += a[i] * b[i] }
0๋ถํฐ a.size - 1 ๊น์ง ๋ฐ๋ณตํ๋ฉด์ ๋ ๋ฐฐ์ด์ ์๋ฆฌ๋ฉํธ ๊ณฑ์ ์ํํ๋ค.
์ฐธ๊ณ ๋ก length์์ -1์ ํ์ง ์์ผ๋ฉด ArrayIndexOutOfBoundsException ์ด ๋ฐ์ํ๋ค. - return sum
์ด๋ ๊ฒ ๊ตฌํ sum์ ๋ฆฌํดํ๋ค.
๋ค๋ฅธ ๋ฐฉ๋ฒ
class Solution {
fun solution(a: IntArray, b: IntArray): Int {
return a.zip(b).map { it.first * it.second }.sum()
}
}
- a.zip(b)
๋ ๊ฐ์ ๋ฐฐ์ด a์ b๋ฅผ ์์๋๋ก ์ง์ง์ด ํ์ด(pair)๋ก ๋ฌถ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋ ๋ฐฐ์ด์ ๋์ผํ ์ธ๋ฑ์ค ์์น์ ์๋ ์์๋ค๋ผ๋ฆฌ ์ง์ง์ด์ง ๋ฆฌ์คํธ๊ฐ ์์ฑ๋๋ค. - map { it.first * it.second }
๊ฐ ํ์ด์ ๋ํด์ ์ฒซ ๋ฒ์งธ ์์์ ๋ ๋ฒ์งธ ์์๋ฅผ ๊ณฑํ ๊ฐ์ ๊ณ์ฐํ์ฌ ์๋ก์ด ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ค. it์ ํ์ฌ ์ดํฐ๋ ์ด์ ์์์ ํ์ด๋ฅผ ๋ํ๋ธ๋ค. it.first๋ ํ์ด์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ, it.second๋ ํ์ด์ ๋ ๋ฒ์งธ ์์๋ฅผ ์๋ฏธํ๋ค. - sum()
์์ฑ๋ ๋ฆฌ์คํธ์ ๋ชจ๋ ์์๋ค์ ๋ํ์ฌ ์ดํฉ์ ๊ณ์ฐํ๋ค.
๐ก zip
val list1 = listOf("a", "b", "c")
val list2 = listOf(1, 2, 3)
val zipped = list1.zip(list2)
println(zipped) // ์ถ๋ ฅ: [(a, 1), (b, 2), (c, 3)] ์๋ก์ด ๋ฆฌ์คํธ ์์ฑ
- ๋ ๊ฐ์ ์ปฌ๋ ์ ์ ์์ผ๋ก ๋ฌถ์ด์ค๋ค.
- ๊ฐ ์ปฌ๋ ์ ์์ ๋์ผํ ์ธ๋ฑ์ค ์์น์ ์๋ ์์๋ค๋ผ๋ฆฌ ํ์ด(pair)๋ฅผ ๋ง๋ค์ด ์๋ก์ด ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ค.
๐กmap
val numbers = listOf(1, 2, 3, 4, 5)
val squaredNumbers = numbers.map { it * it }
println(squaredNumbers) // ์ถ๋ ฅ: [1, 4, 9, 16, 25]
- ๊ฐ ์์๋ฅผ ์ฃผ์ด์ง ๋๋ค ํจ์์ ์ ์ฉํ์ฌ ์๋ก์ด ์ปฌ๋ ์ ์ ์์ฑํ๋ค.
- ๊ธฐ์กด ์ปฌ๋ ์ ์ ๊ฐ ์์์ ๋ํด ์ฃผ์ด์ง ๋๋ค ํจ์๊ฐ ์ ์ฉ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ด์ ์๋ก์ด ์ปฌ๋ ์ ์ ๋ฐํํ๋ค.
class Solution {
fun solution(a: IntArray, b: IntArray): Int {
var answer = 0
for (i in a.indices)
answer += (a[i] * b[i])
return answer
}
}
- ์ ์ฒด์ ์ผ๋ก ๋ด ํ์ด์ ๋น์ทํ๋, for๋ฌธ์ ๋ฒ์์์ a.indices ๋ฅผ ์ด์ฉํ์ฌ ํ์ดํ๋ค.
๐ก.indices
val list = listOf("a", "b", "c")
for (i in list.indices) {
println("Index $i: ${list[i]}")
}
- ์ปฌ๋ ์ ์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋ด๋ ํน๋ณํ ํ๋กํผํฐ
- ์ปฌ๋ ์ ์ ๋ชจ๋ ์์์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋ด๋ ๋ฒ์(Range)๋ฅผ ์ ๊ณต
- ์ผ๋ฐ์ ์ผ๋ก ์ปฌ๋ ์
์ ์ธ๋ฑ์ค๋ฅผ ๋ฐ๋ณตํ๋ ๋ฐ ์ฌ์ฉ
(for ๋ฃจํ์์ ์ปฌ๋ ์ ์ ์ธ๋ฑ์ค๋ฅผ ๋ฐ๋ณตํ๊ฑฐ๋, ์ปฌ๋ ์ ์ ์ผ๋ถ ์์์ ๋ํ ์์ ์ ์ํํ ๋)
class Solution {
fun solution(a: IntArray, b: IntArray): Int = a.mapIndexed { index, it -> it * b[index] }.sum()
- mapIndexed { index, it -> it * b[index] }
mapIndexed ํจ์๋ ๋ฐฐ์ด์ ๊ฐ ์์์ ํด๋น ์ธ๋ฑ์ค์ ๋ํด ์ฃผ์ด์ง ๋๋ค ํจ์๋ฅผ ์ ์ฉํ ๊ฒฐ๊ณผ๋ฅผ ์๋ก์ด ๋ฆฌ์คํธ๋ก ๋ฐํ
์ฌ๊ธฐ์๋ a ๋ฐฐ์ด์ ๊ฐ ์์ it๊ณผ ํด๋น ์ธ๋ฑ์ค index์ ๋ํด it * b[index]๋ฅผ ๊ณ์ฐํ์ฌ ์๋ก์ด ๋ฆฌ์คํธ๋ฅผ ์์ฑ
์ฆ, a ๋ฐฐ์ด์ ๊ฐ ์์์ b ๋ฐฐ์ด์ ๋์ผํ ์ธ๋ฑ์ค ์์น์ ์๋ ์์๋ฅผ ๊ณฑํ ๊ฐ์ ๋ฆฌ์คํธ์ ๋ด์ - sum()
์์ฑ๋ ๋ฆฌ์คํธ์ ๋ชจ๋ ์์๋ค์ ๋ํ์ฌ ์ดํฉ์ ๊ณ์ฐ - ๋๋คํจ์์ ์ฉ๋ฒ์ ๋ณด๊ณ ๋ค์ ๋ณต์ตํด์ผ ํ ๊ฒ ๊ฐ๋ค.
๋ฐ์ํ
๐ฌ C O M M E N T