๋ฐฑ์ค€ - ์ฃผ์‚ฌ์œ„(Swift)

2022. 11. 6. 19:09ใ†์ด๊ฒƒ์ด ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋‹ค/๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฐฑ์ค€ - ์ฃผ์‚ฌ์œ„(Swift)

 

 

 ๋ฌธ์ œ ์„ค๋ช…

 

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

 

1041๋ฒˆ: ์ฃผ์‚ฌ์œ„

์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์— ์ฃผ์‚ฌ์œ„์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์—์„œ A, B, C, D, E, F์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. N์€ 1,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜

www.acmicpc.net

 

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

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ๋ณด๊ธฐ์ „์—๋Š” ๋ฌธ์ œ๋ฅผ ์ž˜ ์ดํ•ดํ•˜์ง€๋„ ๋ชปํ–ˆ๋‹ค.

N*N*N๊ฐœ๋ฅผ ์ด์šฉํ•ด์„œ N*N*Nํฌ๊ธฐ์˜ ์ •์œก๋ฉด์ฒด๋ฅผ ๋งŒ๋“ค๋ผ๊ณ ?

 

ํ•˜์ง€๋งŒ ์ด๋Š” ์กฐ๊ธˆ๋งŒ ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. N์ด 2๋ผ๋ฉด 8๊ฐœ๋กœ 8ํฌ๊ธฐ(1์ธต์— 1x1x1์„ 4์นธ, 2์ธต์— 1x1x1์„ 4์นธ)๋ฅผ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.

 

๋ฌธ์ œ์˜ ํฌ์ปค์Šค๋Š” ๋ณด์ด๋Š” ๋ฉด์˜ ์ตœ์†Œ๊ฐ’์ด๋‹ค. ๊ทธ๋Ÿผ ๋ณด์ด๋Š” ๋ฉด์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ช‡์ธ์ง€๋งŒ ์ฒดํฌํ•˜๋ฉด ๋œ๋‹ค.

 

N์ด 1์ผ ๋•Œ๋ฅผ ์ œ์™ธํ•˜๋ฉด(1์ผ๋•Œ๋Š” 5๋ฉด๋งŒ ๋ณด์ž„) 1๋ฉด์ด ๋ณด์ผ๋•Œ, 2๋ฉด์ด ๋ณด์ผ๋•Œ, 3๋ฉด์ด ๋ณด์ผ๋•Œ๋กœ ๋‚˜๋‰˜์–ด์ง„๋‹ค. 

์ฆ‰ 1๋ฉด์ผ๋•Œ 2๋ฉด์ผ๋•Œ 3๋ฉด์ผ๋•Œ์˜ ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•œ๋’ค N์ด ๋ณ€ํ•จ์—๋”ฐ๋ผ ๊ฐœ์ˆ˜๊ฐ€ ๋ช‡๊ฐœ์ธ์ง€๋ฅผ ๊ตฌํ•˜๊ณ  ๊ณฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋งˆ์ฃผ๋ณด๋Š” ๋ฉด ์ค‘์— ๋” ์ž‘์€ ๊ฐ’์„ ๋„ฃ์–ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

A๋ฉด์€ F๋ฉด๊ณผ ๋งˆ์ฃผ๋ณด๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ž‘์€ ๊ฐ’์„ ๋„ฃ์–ด์ค˜์•ผ ์ตœ์†Œ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ฉด์ด๋œ๋‹ค. ๋‚˜๋จธ์ง€๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ ๊ณต์‹์„ ๋งŒ๋“ค์–ด๋ณด๋ฉด (์ž์„ธํ•œ ๊ฑด ์ฃผ์„์— ์žˆ์Šต๋‹ˆ๋‹ค)

1๋ฉด์ผ๋•Œ (N-1)*(N-1) + 4*(N-1)*(N-2)๊ฐ€ ๋˜๊ณ 

2๋ฉด์ผ๋•Œ 4*(N-2) + 4*(N-1)์ด ๋˜๊ณ 

3๋ฉด์ผ๋•Œ๋Š” 4๊ฐ€ ๋œ๋‹ค.(๋งจ ์œ„์˜ 4๊ฐœ ๋ชจ์„œ๋ฆฌ)

 

๊ทธ๋ž˜์„œ ์ด ๊ฐœ์ˆ˜์™€ ์ตœ์†Œ๊ฐ’์ด ๋‚˜์˜ค๋Š” ๋ฉด์˜ ์ˆ˜๋ฅผ ๊ณฑํ•ด์ฃผ๋ฉด ๋ณด์ด๋Š” ๋ฉด์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๊ฐ€ ๋œ๋‹ค.

 

import Foundation

let N = Int(readLine()!)!
let dice = readLine()!.components(separatedBy:" ").map{Int($0)!}

if N == 1 {
    var dices = dice.sorted(by: <)
    dices.removeLast()
    print(dices.reduce(0, +))
    exit(0)
}


// ๋งˆ์ฃผ๋ณด๋Š” ๋ฉด ์ค‘์— ์ž‘์€ ๊ฐ’๋“ค์„ ์‚ฝ์ž….
var min_dice = [Int]()
min_dice.append(min(dice[0], dice[5]))
min_dice.append(min(dice[1], dice[4]))
min_dice.append(min(dice[2], dice[3]))
min_dice.sort(by: <)

// ๋ฉด์˜ 1๋ฉด, 2๋ฉด, 3๋ฉด์ผ๋•Œ์˜ ์ตœ์†Œ๊ฐ’
let min_one = min_dice[0]
let min_two = min_dice[0] + min_dice[1]
let min_three = min_dice.reduce(0, +)

// ๋ฉด์ด 1๋ฉด, 2๋ฉด, 3๋ฉด ๊ฐ๊ฐ ๋ณด์—ฌ์ง€๋Š” ๊ฒฝ์šฐ ์ฃผ์‚ฌ์œ„์˜ ๊ฐœ์ˆ˜
let one_cnt = (N-2)*(N-2) + 4*(N-2)*(N-1) // ๋งจ์œ„์˜ ๊ฐœ์ˆ˜ + ์˜†๋ฉด์—์„œ์˜ ๊ฐœ์ˆ˜
let two_cnt = 4*(N-2) + 4*(N-1) // ๋งจ ์œ„์˜ ๊ฐœ์ˆ˜ + ์˜†๋ฉด์—์„œ์˜ ๊ฐœ์ˆ˜
let three_cnt = 4 // ๋งจ ์œ„ ๋ชจ์„œ๋ฆฌ 4๊ฐœ๋งŒ


var sum = 0
sum += min_one * one_cnt
sum += min_two * two_cnt
sum += min_three * three_cnt

print(sum)