๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Problem Solution/Programmers

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ Swift

by Fomagran ๐Ÿ’ป 2020. 10. 5.
728x90
๋ฐ˜์‘ํ˜•
 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ

[[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]]

programmers.co.kr

Foma's ํ’€์ด

 

arr1์€ ํ–‰์œผ๋กœ ๊ฐ ๋ฐฐ์—ด์˜ ์ˆซ์ž๋ฅผ ๊ฐ€๋กœ๋ฐฉํ–ฅ(→)์œผ๋กœ ์ด๋™ํ•˜๊ณ  ๋‹ค์Œ ๋ฐฐ์—ด๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

[2,3,2]

[4,2,4]

[3,1,4]

arr2 ์—ด์œผ๋กœ ๊ฐ ๋ฐฐ์—ด์„ ์„ธ๋กœ๋ฐฉํ–ฅ(↓)์œผ๋กœ ์ด๋™ํ•˜๊ณ  ๋ฐฐ์—ด์•ˆ์˜ ๋‹ค์Œ ์ˆซ์ž๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

[5,4,3]

[2,4,1]

[3,1,1]

arr1์˜ ํ–‰๊ณผ arr2์˜ ์—ด์„ ๊ฐ๊ฐ ๊ณฑํ•ด์ค€ ๊ฐ’์„ ๋”ํ•œ๊ฐ’์„ answer์— ์ฐจ๋ก€๋Œ€๋กœ ๋‹ด์•„์ค๋‹ˆ๋‹ค.

ex)

2 * 5 + 3 * 2 + 2 * 3 => 22

2 * 4 + 3 * 4 + 2 * 1 => 22

2 * 3 + 3 * 1 + 2 * 1 => 11

 

4 * 5 + 2 * 2 + 4 * 3 => 36

4 * 4 + 2 * 4 + 4 * 1 => 28

43 + 2 * 1 + 4 * 1 => 18

 

35 + 1 * 2 + 43 => 29

3 * 4 + 1 * 4 + 4 * 1 => 20

33 + 1 * 1 + 4 * 1 => 14

 

answer = [[22,22,11],[36,28,18],[29,29,18]]

 

์ด์™€ ๊ฐ™์ด ์ง„ํ–‰๋˜๊ธฐ ์œ„ํ•ด์„ 

 

๋จผ์ € answer์„ ๋‹ด์„ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. (ํ–‰ * ์—ด ์ˆซ์ž๋“ค์„ ๋‹ด๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ํ–‰์˜ ๊ฐฏ์ˆ˜๋งŒํผ [Int]๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.->  var answer = Array(repeating: [Int](), count: arr1.count)

 

arr1์„ ๋งจ ๋ฐ”๊นฅ for๋ฌธ์œผ๋กœ ๋ฐ˜๋ณตํ•ด์ฃผ๊ณ  -> for i in 0..<arr1.count {...}

 

arr2์˜ ์•ˆ์˜ ์ˆซ์ž๋งŒํผ for๋ฌธ์œผ๋กœ ๋ฐ˜๋ณตํ•ด์ฃผ๊ณ  -> for j in 0..<arr2[0].count{...}

 

answer์— ์ถ”๊ฐ€๋  ์ˆซ์ž๋ฅผ ๋‹ด์„ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ->var value = 0

 

arr2์˜ ๊ฐฏ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•ด์ค๋‹ˆ๋‹ค. -> for k in 0..<arr2.count{...}

 

value์— ์œ„์— ์„ค๋ช…ํ•œ๋Œ€๋กœ ๊ฐ’์„ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. -> value += arr1[i][k] * arr2[k][j]

 

arr2์˜ ๊ฐฏ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜๋Š” for๋ฌธ์„ ๋‚˜์™€ answer์— arr1์˜ ์ฐจ๋ก€๋Œ€๋กœ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. -> answer[i].append(value)

 

์ „์ฒดํ’€์ด

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import Foundation
 
func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] {
    var answer = Array(repeating: [Int](), count: arr1.count)
    
    for i in 0..<arr1.count {
        for j in 0..<arr2[0].count{
            var value = 0
            for k in 0..<arr2.count{
                value += arr1[i][k] * arr2[k][j]
            }
            answer[i].append(value)
        }
    }
    return answer
}

 

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€