๋ฐฑ์ค€ - ์ˆ˜ ๋ฌถ๊ธฐ(Swift)

2022. 10. 25. 19:40ใ†Algorithm

๋ฐฑ์ค€ - ์ˆ˜ ๋ฌถ๊ธฐ(Swift)

 

 

 ๋ฌธ์ œ ์„ค๋ช…

 

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

 

1744๋ฒˆ: ์ˆ˜ ๋ฌถ๊ธฐ

๊ธธ์ด๊ฐ€ N์ธ ์ˆ˜์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ทธ ์ˆ˜์—ด์˜ ํ•ฉ์„ ๊ตฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ๊ทธ๋ƒฅ ๊ทธ ์ˆ˜์—ด์˜ ํ•ฉ์„ ๋ชจ๋‘ ๋”ํ•ด์„œ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ˆ˜์—ด์˜ ๋‘ ์ˆ˜๋ฅผ ๋ฌถ์œผ๋ ค๊ณ  ํ•œ๋‹ค. ์–ด๋–ค ์ˆ˜๋ฅผ ๋ฌถ์œผ๋ ค๊ณ  ํ•  ๋•Œ, ์œ„์น˜์—

www.acmicpc.net

 

 ๋‚˜์˜ ํ’€์ด

 

์ฒ˜์Œ์—๋Š” ์Šคํƒ์„ ์ •์˜ํ•ด์„œ 1๋ณด๋‹ค ํฐ ๊ฐ’์ด 2๊ฐœ๊ฐ€ ๋“ค์–ด์˜จ๋‹ค๋ฉด ๊ณฑํ•ด์ฃผ๊ณ  ์•„๋‹ˆ๋ผ๋ฉด ๋”ํ•ด์ค˜์„œ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋”๋‹ˆ ์Œ์ˆ˜ ๋‘๊ฐœ๊ฐ€ ๊ณฑํ•ด์ง„ ๊ฒฝ์šฐ๋Š” ์–‘์ˆ˜๊ฐ€ ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ฐ„๊ณผํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. 

 

์ด ๋ฌธ์ œ๋Š” 1๋ณด๋‹ค ํฐ ์ˆ˜, 1์ธ ์ˆ˜, 0๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ˆ˜ 3๊ฐœ๋กœ ๋ถ„๋ฅ˜ํ•ด์„œ ํ’€์–ด์•ผํ•œ๋‹ค.

1๋ณด๋‹ค ํฐ์ˆ˜๋Š” ์ „๋ถ€ ๊ณฑํ•ด์ฃผ๊ณ , 1์ธ์ˆ˜๋Š” ์ „๋ถ€ ๋”ํ•ด์ฃผ๋ฉฐ 0๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ˆ˜๋„ ์ „๋ถ€ ๊ณฑํ•ด์ฃผ๋ฉด๋œ๋‹ค.

๋‹จ 1๋ณด๋‹ค ํฐ์ˆ˜๋„ ๊ทธ๋ ‡๊ณ  0๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜๊ฐœ๋ผ๋ฉด ๊ณฑํ–ˆ์„๋•Œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๋งŒ๋“œ๋Š” ์ˆซ์ž๋งŒ ๋”ํ•ด์ฃผ๊ณ  ์ง์ˆ˜์ธ์ฑ„๋กœ ๊ณฑํ•ด์ค˜์•ผํ•œ๋‹ค.

 

๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ถ„๋ฅ˜๋ฅผ ํ™•์‹คํ•˜๊ฒŒ ํ•ด์„œ ๊ทœ์น™์„ ์ฐพ๋Š” ์—ฐ์Šต์ด ํ•„์š”ํ•˜๋‹ค.

 

import Foundation

let n = Int(readLine()!)!
var plus: [Int] = []
var minus: [Int] = []
var sum = 0
for _ in 0..<n {
    let a = Int(readLine()!)!
    if a <= 0 { minus.append(a) }
    else if a == 1 { sum += 1 }
    else { plus.append(a) }
}

plus.sort(by: >)
minus.sort(by: <)

if plus.count % 2 == 1 { sum += plus.removeLast()}
if minus.count % 2 == 1 { sum += minus.removeLast()}

while plus.count > 0 || minus.count > 0 {
    if plus.count > 0 { sum += plus.removeLast() * plus.removeLast() }
    if minus.count > 0 { sum += minus.removeLast() * minus.removeLast() }
}

print(sum)