๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
3๏ธโƒฃ Swift/Problem Solving

[Swift Algorithm] ๋ณด๋ฌผ BOJ #1026

by seolhee2750 2021. 8. 18.
๋ฌธ์ œ ์„ค๋ช…

์˜›๋‚  ์˜›์ ์— ์ˆ˜ํ•™์ด ํ•ญ์ƒ ํฐ ๊ณจ์นซ๊ฑฐ๋ฆฌ์˜€๋˜ ๋‚˜๋ผ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ด ๋‚˜๋ผ์˜ ๊ตญ์™• ๊น€์ง€๋ฏผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋‚ด๊ณ  ํฐ ์ƒ๊ธˆ์„ ๊ฑธ์—ˆ๋‹ค.

๊ธธ์ด๊ฐ€ N์ธ ์ •์ˆ˜ ๋ฐฐ์—ด A์™€ B๊ฐ€ ์žˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•จ์ˆ˜ S๋ฅผ ์ •์˜ํ•˜์ž.

S = A[0]×B[0] + ... + A[N-1]×B[N-1]

S์˜ ๊ฐ’์„ ๊ฐ€์žฅ ์ž‘๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด A์˜ ์ˆ˜๋ฅผ ์žฌ๋ฐฐ์—ดํ•˜์ž. ๋‹จ, B์— ์žˆ๋Š” ์ˆ˜๋Š” ์žฌ๋ฐฐ์—ดํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.

S์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” A์— ์žˆ๋Š” N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง€๊ณ , ์…‹์งธ ์ค„์—๋Š” B์— ์žˆ๋Š” ์ˆ˜๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. N์€ 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , A์™€ B์˜ ๊ฐ ์›์†Œ๋Š” 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์Œ์ด ์•„๋‹Œ ์ •์ˆ˜์ด๋‹ค.

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— S์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ์ œ

์ž…๋ ฅ

5
1 1 1 6 0
2 7 8 3 1

์ถœ๋ ฅ

18

 

๋‚ด ๋ฌธ์ œ ํ’€์ด
import Foundation

let count = Int(readLine()!)!
let A = readLine()!.split(separator: " ").map({Int(String($0))!})
let B = readLine()!.split(separator: " ").map({Int(String($0))!})

var A_sort = A.sorted(by: >)
var B_sort = B.sorted(by: <)

var sum = 0

for _ in 0..<count {
    sum += A_sort.removeLast() * B_sort.removeLast()
}

print(sum)

๐Ÿ‘‰ ์ด ๋ฌธ์ œ๋Š” B ๋ฐฐ์—ด์€ ๊ทธ๋Œ€๋กœ ๋‘ฌ์•ผํ•œ๋‹ค๋Š” ๊ฒƒ ๋•Œ๋ฌธ์— ์–ด๋ ต๊ฒŒ ์ƒ๊ฐ๋์—ˆ๋Š”๋ฐ,,

์ƒ๊ฐํ•ด๋ณด๋‹ˆ ์–ด์ฐจํ”ผ ์ตœ์†Ÿ๊ฐ’๋งŒ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๋ฐฐ์—ด ๋ชจ๋‘ ์ •๋ ฌ์„ ๋ฐ”๊ฟ”์ฃผ์–ด๋„ ์ƒ๊ด€์—†๋‹ค..โ—๏ธ

  • ํ•œ ๋ฐฐ์—ด์˜ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์€ ๋‹ค๋ฅธ ๋ฐฐ์—ด์˜ ๊ฐ€์žฅ ํฐ ๊ฐ’๊ณผ ๊ณฑํ•ด์ฃผ๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณตํ•˜๋ฉด ์ตœ์†Œ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ A๋ฐฐ์—ด์€ ๋‚ด๋ฆผ์ฐจ์ˆœ, B๋ฐฐ์—ด์€ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜์—ฌ ์ˆœ์„œ๋Œ€๋กœ ๊ณฑํ•ด์ฃผ์—ˆ๋‹ค.

 

๐Ÿ’ก ํ”ผ๋“œ๋ฐฑ
  • ๋ฌธ์ œ๋งŒ ์ž˜ ํŒŒ์•…ํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค.

 


 

๋ฌธ์ œ

https://www.acmicpc.net/problem/1026

๋Œ“๊ธ€