2022. 10. 28. 11:16ใAlgorithm
๋ฐฑ์ค - ํฐ๋ฆฐ๋๋กฌ ๋ง๋ค๊ธฐ(Swift)
๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/1213
๋์ ํ์ด
ํ๋ฌธ์ ๊ฒ์ฌํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์์ง๋ง ํ๋ฌธ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ ์๋ฟ์ง์์๋ค.
์ฐ์ ์ง์๋ง ์์๋๋ 100% ํ๋ฌธ์ ๋ง๋ค ์ ์๊ณ , ํ์๊ฐ ํฌํจ๋ ๋๋ ํ์์ธ ์ํ๋ฒณ์ด ํ ์ข ๋ฅ์ผ๋๋ง ๊ฐ๋ฅํ๋ค๋ ๊ฒ ๊น์ง๋ ์์๋ค.
์ฆ AABBC๋ ABCBA๋ก ๊ฐ๋ฅํ์ง๋ง AABBCD๋ ๋ถ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง ์ด๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํด์ผํ ์ง ๊ณ ๋ฏผ์ ํ๋ค๊ฐ ๋ค๋ฅธ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๊ณ ํ์๋ฅผ ๊ฐ์ด๋ฐ ์ง์๋ฅผ ์์ชฝ์ ๋ฐฐ์นํ๋ฉด ๋๋ ๊ฒ์ ์์๋ค.
๋ ์ฌ๋ฐ์๋ ๊ฒ์ ์ ๋ต์ด ์ฌ๋ฌ๊ฐ์ผ๋๋ ์ฌ์ ์์ผ๋ก ์ถ๋ ฅํด์ผํ๊ธฐ ๋๋ฌธ์ key๊ฐ ํฐ๊ฐ๋ถํฐ ์ ๋ ฌํด์ ํฐ๊ฐ๋ถํฐ ๋๊ฐ๊ฒ ํ๋ ๊ฒ์ด์๋ค.
import Foundation
var dic:[String: Int] = [:]
let strArr = readLine()!.map{String($0)}
// ์ํ๋ฒณ์ด ์ฐ์ธ ๊ฐ์๋ฅผ ์ฝ์
for x in strArr {
if dic[x] == nil {
dic[x] = 1
} else {
dic[x]! += 1
}
}
// ํ์์ ๊ฐ์๋ฅผ ๋ด์ ๋ฐฐ์ด
var odd: [String] = []
for key in dic.keys {
if dic[key]! % 2 == 1 {
odd.append(key)
}
}
// ์ํ๋ฒณ์ด ํ์์ธ ๊ฒฝ์ฐ๊ฐ 1๊ฐ์ด์์ด๋ผ๋ฉด ์ข
๋ฃ
if odd.count > 1 { print("I'm Sorry Hansoo"); exit(0)}
var result = ""
// ํ์๋ฅผ ๊ฐ์ด๋ฐ ๋ฐฐ์น
if odd.count == 1 {
result += odd[0]
dic[odd[0]]! -= 1
}
// ์ํ๋ฒณ์ ํฐ ์์๋๋ก ๋ฐฐ์นํจ์ผ๋ก์จ ๊ฐ์ฅ ๋ฐ๊นฅ์กฑ์ ์ ์ผ ์์ ๊ฒ์ ๋ฐฐ์น
for key in dic.keys.sorted(by: >) {
while dic[key]! > 0 {
result = key + result + key
dic[key]! -= 2
}
}
print(result)
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - ๋ณ๋ ๋์ดํธ(Swift) (0) | 2022.10.31 |
---|---|
๋ฐฑ์ค - ๋ฉํฐํญ ์ค์ผ์ค๋ง(Swift) (0) | 2022.10.31 |
๋ฐฑ์ค - ์ธํ์ ์ฌ์ฅ ๋ํ(Swift) (0) | 2022.10.28 |
๋ฐฑ์ค - ๊ฐ์์ค ๋ฐฐ์ (Swift) (0) | 2022.10.28 |
๋ฐฑ์ค - ์ ์ธ(Swift) (1) | 2022.10.27 |