๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โŒจ๏ธ Language/swift

[Swift] ๋ฐฑ์ค€ 1919๋ฒˆ - ์• ๋„ˆ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ

by hyebin (Helia) 2023. 3. 25.
๋ฐ˜์‘ํ˜•
๋ฐฑ์ค€ ๋ฌธ์ œ ๋ชจ์Œ

๋ฌธ์ œ ๋งํฌ

https://www.acmicpc.net/problem/1919

 

1919๋ฒˆ: ์• ๋„ˆ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ

๋‘ ์˜์–ด ๋‹จ์–ด๊ฐ€ ์ฒ ์ž์˜ ์ˆœ์„œ๋ฅผ ๋’ค๋ฐ”๊พธ์–ด ๊ฐ™์•„์งˆ ์ˆ˜ ์žˆ์„ ๋•Œ, ๊ทธ๋Ÿฌํ•œ ๋‘ ๋‹จ์–ด๋ฅผ ์„œ๋กœ ์• ๋„ˆ๊ทธ๋žจ ๊ด€๊ณ„์— ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด occurs ๋ผ๋Š” ์˜์–ด ๋‹จ์–ด์™€ succor ๋Š” ์„œ๋กœ ์• ๋„ˆ๊ทธ๋žจ ๊ด€๊ณ„์— ์žˆ๋Š”๋ฐ, occurs

www.acmicpc.net

 

๋ฌธ์ œ

๋‘ ์˜์–ด ๋‹จ์–ด๊ฐ€ ์ฒ ์ž์˜ ์ˆœ์„œ๋ฅผ ๋’ค๋ฐ”๊พธ์–ด ๊ฐ™์•„์งˆ ์ˆ˜ ์žˆ์„ ๋•Œ, ๊ทธ๋Ÿฌํ•œ ๋‘ ๋‹จ์–ด๋ฅผ ์„œ๋กœ ์• ๋„ˆ๊ทธ๋žจ ๊ด€๊ณ„์— ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด occurs๋ผ๋Š” ์˜์–ด ๋‹จ์–ด์™€ succor๋Š” ์„œ๋กœ ์• ๋„ˆ๊ทธ๋žจ ๊ด€๊ณ„์— ์žˆ๋Š”๋ฐ, occurs์˜ ๊ฐ ๋ฌธ์ž๋“ค์˜ ์ˆœ์„œ๋ฅผ ์ž˜ ๋ฐ”๊พธ๋ฉด succor์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

ํ•œ ํŽธ, dared์™€ bread๋Š” ์„œ๋กœ ์• ๋„ˆ๊ทธ๋žจ ๊ด€๊ณ„์— ์žˆ์ง€ ์•Š๋‹ค. ํ•˜์ง€๋งŒ dared์—์„œ ๋งจ ์•ž์˜ d๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , bread์—์„œ ์ œ์ผ ์•ž์˜ b๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด, ared์™€ read๋ผ๋Š” ์„œ๋กœ ์• ๋„ˆ๊ทธ๋žจ ๊ด€๊ณ„์— ์žˆ๋Š” ๋‹จ์–ด๊ฐ€ ๋‚จ๊ฒŒ ๋œ๋‹ค.

 

๋‘ ๊ฐœ์˜ ์˜์–ด ๋‹จ์–ด๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋‘ ๋‹จ์–ด๊ฐ€ ์„œ๋กœ ์• ๋„ˆ๊ทธ๋žจ ๊ด€๊ณ„์— ์žˆ๋„๋ก ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ ์ œ๊ฑฐํ•ด์•ผ ํ•˜๋Š” ์ตœ์†Œ ๊ฐœ์ˆ˜์˜ ๋ฌธ์ž ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•  ๋•Œ์—๋Š” ์•„๋ฌด ์œ„์น˜์— ์žˆ๋Š” ๋ฌธ์ž๋“ ์ง€ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„๊ณผ ๋‘˜์งธ ์ค„์— ์˜์–ด ๋‹จ์–ด๊ฐ€ ์†Œ๋ฌธ์ž๋กœ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ๊ฐ์˜ ๊ธธ์ด๋Š” 1,000์ž๋ฅผ ๋„˜์ง€ ์•Š์œผ๋ฉฐ, ์ ์–ด๋„ ํ•œ ๊ธ€์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜

  • ๊ตฌํ˜„
  • ๋ฌธ์ž์—ด

๋ฌธ์ œ ํ’€์ด

  • Strfry์™€ ๋น„์Šทํ•œ ๋ฐฉ์‹
  • ๋‘ ๋ฌธ์ž์—ด์„ ๊ฐ๊ฐ firstString๊ณผ secondString์œผ๋กœ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
  • ๊ฐ ์•ŒํŒŒ๋ฒณ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‹ด์„ ๋ฐฐ์—ด arr๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • arr์—์„œ (์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์—์„œ ๊ฐ ์•ŒํŒŒ๋ฒณ์˜ ์•„์Šคํ‚ค์ฝ”๋“œ - 97) ๋ฒˆ์งธ ์š”์†Œ๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
  • arr์—์„œ(๋‘ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์—์„œ ๊ฐ ์•ŒํŒŒ๋ฒณ์˜ ์•„์Šคํ‚ค์ฝ”๋“œ - 97) ๋ฒˆ์งธ ์š”์†Œ๋ฅผ 1 ๊ฐ์†Œ์‹œํ‚จ๋‹ค.
  • arr๋ฅผ reduce ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์š”์†Œ์˜ ํ•ฉ์„ ๊ตฌํ•œ๋‹ค. ์ด๋•Œ ๊ฐ ์š”์†Œ๋Š” abs() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ˆ๋Œ“๊ฐ’์„ ๋”ํ•œ๋‹ค.

์†Œ์Šค์ฝ”๋“œ

var firstString = readLine()!
var secondString = readLine()!
var arr = Array(repeating: 0, count: 26)

for s in firstString {
    arr[Int(exactly: s.asciiValue!)!-97] += 1
}
for s in secondString {
    arr[Int(exactly: s.asciiValue!)!-97] -= 1
}

print(arr.reduce(0){abs($0) + abs($1)})
  • 8ms ์†Œ์š”

๋‹ค๋ฅธ ํ’€์ด

var arrA = readLine()!.map{ String($0) }
var arrB = readLine()!.map{ String($0) }

var res: Int = 0
for a in arrA {
    if arrB.contains(a) {
        if let index = arrB.firstIndex(of: a) {
            arrB.remove(at: index)
        }
    } else {
        res += 1
    }
}
print(res+arrB.count)
  • 8ms ์†Œ์š”
  • ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์˜ ์•ŒํŒŒ๋ฒณ์ด ๋‘ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์— ์žˆ๋‹ค๋ฉด, ๋‘ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์—์„œ ํ•ด๋‹น ์•ŒํŒŒ๋ฒณ์„ ์‚ญ์ œํ•œ๋‹ค.
  • ์•„๋‹ˆ๋ผ๋ฉด res ๋ณ€์ˆ˜์— 1์„ ๋”ํ•œ๋‹ค.
  • ์ตœ์ข…์ ์œผ๋กœ res์— ๋‘ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ๋”ํ•œ ํ›„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
๋ฐ˜์‘ํ˜•