import Foundation
class Tree{
var name: String
var count: Int
func add(){
self.count += 1
}
init(_ name: String){
self.name = name
self.count = 1
}
}
var treeList = [Tree]()
var totalTreeCount = 0
while let line = readLine(){
var exist = false
totalTreeCount += 1
for tree in treeList{
if(tree.name == line){
tree.add()
exist = true
break
}
}
if(!exist){
treeList.append(Tree(line))
}
}
let result = treeList.sorted(by: {$0.name < $1.name})
for tree in result{
let per = round((Double(tree.count)/Double(totalTreeCount)) * 1000000)/10000
print("\(tree.name) \(per)")
}
참고로 알고 냈지만 당연히 시간초과다..^^
딕셔너리를 쓰면 된다고한다.
아무래도 HashSet쓰니까 그렇겠지..
import Foundation
var treeList = [String:Double]()
var totalTreeCount = 0
while let line = readLine(){
totalTreeCount += 1
let tree = treeList[line] ?? 0
treeList[line] = tree + 1
}
let result = treeList.sorted(by: {$0.key < $1.key})
for tree in result{
let per = round((Double(tree.value)/Double(totalTreeCount)) * 1000000)/10000
print("\(tree.key) \(per)")
}
근데 틀렸다.
아무래도 round부분을 잘못 적은듯..
import Foundation
var treeList = [String:Double]()
var totalTreeCount: Double = 0
while let line = readLine(){
totalTreeCount += 1
let tree = treeList[line] ?? 0
treeList[line] = tree + 1
}
let result = treeList.sorted(by: {$0.key < $1.key})
func getPercentage(value: Double) -> String{
let percent = value / totalTreeCount * 100
let roundedPer = round(percent * 10000) / 10000
return String(format: "%.4f", roundedPer)
}
for tree in result{
print("\(tree.key) \(getPercentage(value: tree.value))")
}