๋ฐฑ์ค - ํฌ๋ก์ค์ปจํธ๋ฆฌ(Swift)
2022. 11. 9. 14:25ใAlgorithm
๋ฐฑ์ค - ํฌ๋ก์ค์ปจํธ๋ฆฌ(Swift)
๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/9017
๋์ ํ์ด
๊ตฌํ ๋ฌธ์ ๋ ์๋ ์ด๋ ๊ฒ ํธ๋๊ฑธ๊น?
์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋จํ์ง๋ง ๋ฌด์๋ณด๋ค ๊ผผ๊ผผํ๊ฒ ๋ฌธ์ ์ ์๊ตฌ์ฌํญ์ ๊ตฌํํ๋๊ฒ ๊ด๊ฑด์ด๋ค.
๋ด๊ฐ ๋์ณค๋ ๋ถ๋ถ์ ๊ฐ์ฅ ์์์ ์ ์ 4๋ช ์ ์ ์๋ก ํ๋จํ๋ ๊ฒ๊ณผ ์ด ์ ์๋ ๋์์๋ก ์ข์ ๊ฒ์ด ์๋ ๋ฎ์์๋ก ์ข๋ค๋ ๊ฒ์ด๋ค.
์ฝ๋๋ฅผ ์ง๋ฉด์ ๋๋ฌด ๊ธธ์ด์ง๋ ๊ฒ ์๋๊ฐ ์์ฌ์ ํ์ง๋ง ๊ฒฐ๊ตญ ํ๊ณ ๋ณด๋ ์์ฌํ ์ฌ์ง๊ฐ ์์๋ ๊ฒ ๊ฐ๋ค.
import Foundation
let tc = Int(readLine()!)!
for _ in 0..<tc {
var dic = [Int: [Int]]() // ๊ฐ ํ์ด ์ป๋ ์ ์๋ค
var set1: Set<Int> = [] // ํ์ ์ข
๋ฅ
let n = Int(readLine()!)!
var arr = readLine()!.components(separatedBy:" ").map{Int($0)!}
set1 = Set(arr)
for x in set1 {
let cnt = arr.filter{$0 == x}.count
if cnt < 6 { // ์ ์๊ฐ 6๋ช
์๋๋ฉด ์ ์ธ
arr = arr.filter{$0 != x}
}
}
var value = 1 // ์ ์
for x in arr {
if dic[x] == nil {
dic[x] = [value]
} else {
dic[x]!.append(value)
}
value += 1
}
var reduceArr = dic.map{ a in
return (a.key, (0...3).map{ a.value[$0] }.reduce(0, +)) //๊ฐ์ฅ ์์์ 4๋ช
์ ์ ์๋ฅผ ๋์
}
var minVal = 1001
for x in reduceArr {
if x.1 < minVal { // ์ ์ผ ๋ฎ์ ์ ์๋ฅผ ๊ฐ์ง ํ์ ์ ์
minVal = x.1
}
}
var fillArr = reduceArr.filter{$0.1 == minVal}
if fillArr.count > 1 { // ์ ์ผ ๋ฎ์ ์ ์๋ฅผ ๊ฐ์ง ํ์ด ์ฌ๋ฌ ํ์ด๋ผ๋ฉด
var min = 1001
var result = 0
for x in fillArr {
if min > dic[x.0]![4] { //๋ค์ฏ๋ฒ์งธ์ ์ ์๋ฅผ ๋น๊ตํ๋ค.
min = dic[x.0]![4]
result = x.0
}
}
print(result)
} else {
print(fillArr[0].0) // ์ ์ผ ๋ฎ์ ์ ์๋ฅผ ๊ฐ์ง ํ์ด ํ๋๋ผ๋ฉด ๊ทธ ํ์ ์ถ๋ ฅ
}
}
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - ๊ธฐ์์บ์คํฐ(Swift) (0) | 2022.11.10 |
---|---|
๋ฐฑ์ค - ๋ฑ์๊ตฌํ๊ธฐ(Swift) (0) | 2022.11.09 |
๋ฐฑ์ค - ๋ฉ์น(Swift) (0) | 2022.11.09 |
๋ฐฑ์ค - ์ฌ๋ฆผํฝ(Swift) (0) | 2022.11.08 |
๋ฐฑ์ค - ์ค ์ธ์ฐ๊ธฐ(Swift) (0) | 2022.11.08 |