2022. 10. 25. 11:48ใ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค/๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
๋ฐฑ์ค - ๋จ์ด์ํ(Swift)
๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/1339
๋์ ํ์ด
์ฒ์์๋ ๊ฐ ๋ฌธ์์ด์ count์ ๋ฐ๋ผ์ ๋์ ์์๋๋ก ๊ฐ์ ๋ถ์ฌํ๋ค. ์ด๋ ๊ฒํ๋ฉด ์์ ๋ค์ ์ ๋ถ ๋ง์ง๋ง ๋ฐ๋ก๋ค์ด ์กด์ฌํ๋ค.
์๋ฅผ ๋ค์ด ABC, D, D๋ก ์ฃผ์ด์ก์๋ ๋ด๊ฐ ํ ๋ฐฉ์์ A:9, B:8, C:7, D:6์ด ๋๋ค. ํ์ง๋ง D๊ฐ 7์ธ ๊ฒฝ์ฐ๊ฐ ์ต๋์ ์๊ฐ ๋๋ค.
์ฆ ์ด ๋ฐฉ์์ ์ ๋ต์ด ๋ ์ ์๋ ํ์ด์ด๋ค.(๋ฌธ์ ๋ฅผ ๊ฐ๊ณผํ๋ค.)
๊ทธ๋์ ๋ค๋ฅธ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๊ณ ์๊ฒ ๋ ์๋ฃจ์ ์ ๊ฐ ์๋ฆฌ์ ์๋ฅผ ๋์ ๋๋ฆฌ์ ์ ์ฅํ๊ณ ํฐ ๊ฐ๋ถํฐ ์ซ์๋ฅผ ๋ถ์ฌํ๋ฉด ๋๋ ๊ฒ์ด๋ค.
์์๋ก ABA๋ผ๋ ๊ฐ์ด ๋ค์ด์ค๊ฒ ๋๋ค๋ฉด ์ฒซ ๋ฒ์งธ A๋ 10์ 2์น B๋ 10์ 1์น ์ธ ๋ฒ์งธ A๋ 10์ 3์น์ด ๋๊ณ A๋ 101, B๋ 10์ด๋๋ค.
A๋ B๋ณด๋ค ํฌ๊ธฐ ๋๋ฌธ์ 9๋ฅผ B๋ 8์ ์ฃผ์ด 101*9 + 10*8 = 989๊ฐ ๋๋ค.
import Foundation
let n = Int(readLine()!)!
var dic: [String: Int] = [:]
for _ in 0..<n {
var word = readLine()!
var val = Int(pow(10, Double(word.count-1)))
for x in word {
if dic[String(x)] == nil {
dic[String(x)] = val
} else {
dic[String(x)]! += val
}
val = val/10
}
}
var result = 0
var cnt = 9
for num in dic.values.sorted(by : >) {
result += cnt * num
cnt -= 1
}
print(result)
ํผ๋๋ฐฑ
์ฒ์ ๋ด ํ์ด(ํ๋ฆฐ ํ์ด)๋ฅผ ํ๋ฉด์ ๋ช ๊ฐ์ง ์๊ฒ ๋ ์ ์ด ์๋ค.
๋ฌธ์์ด ๋ฐฐ์ด์์ ๋ฌธ์์ด์ ํ๋์ฉ ์ค์ฌ๋๊ฐ๋ ๋ง์ง๋ง์ ์์ด์ง๋ ๊ฒ์ด ์๋ ""์ธ ์ฑ๋ก ๋จ์์๋ ๊ฒ์ด๋ค. ๊ทธ๋์ ๋ฐ๋ก ""๊ฐ ๋์์๋ ๋ฐฐ์ด ์ ์ฒด์์ removeํ ์ ์๋๋ก ์ค์ ํ๋ค.
[["abcd", "efg"]]๋ผ๋ 2์ฐจ์ ๋ฐฐ์ด์ด ์์๋ flatMap์ ํ๋ฉด ["abcd", "efg"]๊ฐ ๋๋ค.
readLine์ผ๋ก ๋ฌธ์์ด์ ๋ฐ์๋ ๊ผญ map์ผ๋ก ๋ณํ๋ ค๊ณ ๋ ธ๋ ฅํ์ง ๋ง์. ๋ฌธ์์ด์ ๋ฐฐ์ด๋ก ๋ง๋๋๊ฒ ์๋ ๋ฌธ์์ด ๊ทธ๋๋ก ํธ๋ ๋ฌธ์ ์ผ ์๋ ์๋ค. ๋๋ฌด ์ฌ๊ณ ์ ํญ์ ์ขํ์ง ๋ง์์ผ ๊ฒ ๋ค.
'์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค > ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - ์ฃผ์ฌ์(Swift) (0) | 2022.11.06 |
---|---|
1์ด ๋ ๋๊น์ง- ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค (0) | 2020.09.02 |
ํฐ ์์ ๋ฒ์น- ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค (0) | 2020.09.02 |
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ- ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค (0) | 2020.09.02 |