白駿1132号:合-Swift
https://www.acmicpc.net/problem/1132
難易度-金貨3🥇
アルゴリズム分類:グリディ
🧐 質問へのアクセス
これはGold 3なので、何の落とし穴なのかわかりませんが、データ量が多いので、時間が迫っていると思います.
でもそんなことはなくただ思うままに解決すればいい!
2
ABC
BCA
入力時、
Aは100+1
Bは10+100
Cは1+10
そうですね.では11010111順に9,8,7を順番に乗せればいいのです簡単すぎるでしょう?
注意点の一番前にあるアルファベットには0を割り当てることはできません.単独で処理すればいい!
コード#コード#
1.アルファベットの桁数を求める
dictを使用して管理します.
0を処理するために、一番前のアルファベットをfrontalphaに入れます.
後で9876543210が全部切れたら、
frontalphaにないアルファベット表では、最小値のアルファベット表に0を指定します.
難易度-金貨3🥇
アルゴリズム分類:グリディ
🧐 質問へのアクセス
これはGold 3なので、何の落とし穴なのかわかりませんが、データ量が多いので、時間が迫っていると思います.
でもそんなことはなくただ思うままに解決すればいい!
2
ABC
BCA
入力時、
Aは100+1
Bは10+100
Cは1+10
そうですね.では11010111順に9,8,7を順番に乗せればいいのです簡単すぎるでしょう?
注意点の一番前にあるアルファベットには0を割り当てることはできません.単独で処理すればいい!
コード#コード#
1.アルファベットの桁数を求める
dictを使用して管理します.
0を処理するために、一番前のアルファベットをfrontalphaに入れます.
後で9876543210が全部切れたら、
frontalphaにないアルファベット表では、最小値のアルファベット表に0を指定します.
var dict: [Character: Double] = [:]
var frontAlpha: Set<Character> = []
for _ in 0..<n {
let numbers = Array(readLine()!)
frontAlpha.insert(numbers.first!)
for (idx,ch) in numbers.reversed().enumerated() {
if dict[ch] != nil {
dict[ch]! += pow(10, Double(idx))
} else {
dict[ch] = pow(10, Double(idx))
}
}
}
処理2.0//0처리 하기
if dict.count == 10 {
for (key,_) in dict.sorted(by: {$0.value < $1.value}) where !frontAlpha.contains(key) {
dict[key] = nil
break
}
}
完全なコード//1132번 합
import Foundation
let n = Int(readLine()!)!
var dict: [Character: Double] = [:]
var frontAlpha: Set<Character> = []
for _ in 0..<n {
let numbers = Array(readLine()!)
frontAlpha.insert(numbers.first!)
for (idx,ch) in numbers.reversed().enumerated() {
if dict[ch] != nil {
dict[ch]! += pow(10, Double(idx))
} else {
dict[ch] = pow(10, Double(idx))
}
}
}
//0처리 하기
if dict.count == 10 {
for (key,_) in dict.sorted(by: {$0.value < $1.value}) where !frontAlpha.contains(key) {
dict[key] = nil
break
}
}
var ans = 0
var num = 9
for value in dict.values.sorted(by: >) {
ans += Int(value) * num
num -= 1
}
print(ans)
一行評価:1銀色レベルのようです.Reference
この問題について(白駿1132号:合-Swift), 我々は、より多くの情報をここで見つけました https://velog.io/@aurora_97/백준-1132번-합-Swiftテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol