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

[Swift] ๋ฐฑ์ค€ 11328๋ฒˆ - Strfry

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

๋ฌธ์ œ ๋งํฌ

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

 

11328๋ฒˆ: Strfry

C ์–ธ์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋ฌธ์ž์—ด(string)์€ nativeํ•œ ์ž๋ฃŒํ˜•์ด ์•„๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ๋ฌธ์ž์—ด์€ ๊ทธ์ €, ๋ฌธ์ž์—ด์˜ ๋์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ๋ง๋‹จ์˜ NULL์ด ์‚ฌ์šฉ๋œ, ๋ฌธ์ž๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด์ผ ๋ฟ์ด๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋กœ๊ทธ๋ž˜

www.acmicpc.net

 

๋ฌธ์ œ

C ์–ธ์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋ฌธ์ž์—ด(string)์€ native ํ•œ ์ž๋ฃŒํ˜•์ด ์•„๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ๋ฌธ์ž์—ด์€ ๊ทธ์ €, ๋ฌธ์ž์—ด์˜ ๋์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ๋ง๋‹จ์˜ NULL์ด ์‚ฌ์šฉ๋œ, ๋ฌธ์ž๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด์ผ ๋ฟ์ด๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, C ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š” ๋ฐ์— ๋งค์šฐ ์œ ์šฉํ•œ ํ•จ์ˆ˜๋“ค์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค : ๊ทธ๋“ค ์ค‘์—๋Š” strcpy, strcmp, strtol, strtok, strlen, strcat ๊ฐ€ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ, ์ž˜ ์•Œ๋ ค์ ธ ์žˆ์ง€ ์•Š์œผ๋ฉฐ, ์ž˜ ์‚ฌ์šฉ๋˜์ง€๋„ ์•Š๋Š” ํ•จ์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์žˆ๋‹ค : strfry ํ•จ์ˆ˜๋‹ค. strfry ํ•จ์ˆ˜๋Š” ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด์„ ๋ฌด์ž‘์œ„๋กœ ์žฌ๋ฐฐ์—ดํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค. (์—ญ์ž ์ฃผ : ์—ฌ๊ธฐ์—์„œ ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด๊ณผ ์ƒˆ๋กœ ์žฌ๋ฐฐ์—ด๋œ ๋ฌธ์ž์—ด์ด ๋‹ค๋ฅผ ํ•„์š”๋Š” ์—†๋‹ค.)

๋‘ ๊ฐœ์˜ ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด, 2๋ฒˆ์งธ ๋ฌธ์ž์—ด์ด 1๋ฒˆ์งธ ๋ฌธ์ž์—ด์— strfry ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜์—ฌ ์–ป์–ด์งˆ ์ˆ˜ ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋ผ.

์ž…๋ ฅ

์ž…๋ ฅ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ˆ˜ 0 < N < 1001์ด๋‹ค.

๊ฐ๊ฐ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•˜๋‚˜์˜ ์ค„์— ์˜์–ด ์†Œ๋ฌธ์ž๋“ค๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋‘ ๊ฐœ์˜ ๋ฌธ์ž์—ด์ด ํ•œ ๊ฐœ์˜ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ฃผ์–ด์ง„๋‹ค. ๊ฐ๊ฐ์˜ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” ์ตœ๋Œ€ 1000์ด๋‹ค.

์ถœ๋ ฅ

๊ฐ๊ฐ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด, 2๋ฒˆ์งธ ๋ฌธ์ž์—ด์ด 1๋ฒˆ์งธ ๋ฌธ์ž์—ด์— strfry ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜์—ฌ ์–ป์–ด์งˆ ์ˆ˜ ์žˆ๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ "Impossible"(๋ถˆ๊ฐ€๋Šฅ) ๋˜๋Š” "Possible"(๊ฐ€๋Šฅ)์œผ๋กœ ๋‚˜ํƒ€๋‚ด์‹œ์˜ค. (๋”ฐ์˜ดํ‘œ๋Š” ์ œ์™ธํ•˜๊ณ  ์ถœ๋ ฅํ•œ๋‹ค.)

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

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

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

๋ฌธ์ œ ํ’€์ด

  • ๋น„๊ตํ•  ๋‘ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ stringValue์— ์ €์žฅํ•œ๋‹ค.
  • a๋ถ€ํ„ฐ z๊นŒ์ง€ ๊ฐ ์•ŒํŒŒ๋ฒณ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‹ด์„ ๋ฐฐ์—ด alphabet์„ ์ƒ์„ฑํ•œ๋‹ค.
  • alphabet ๋ฐฐ์—ด์—์„œ (์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์—ด ์•ŒํŒŒ๋ฒณ์˜ ์•„์Šคํ‚ค์ฝ”๋“œ ๊ฐ’ - 97) ๋ฒˆ์งธ ์š”์†Œ๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
    • a์˜ ์•„์Šคํ‚ค์ฝ”๋“œ๊ฐ€ 97์ด๊ธฐ ๋•Œ๋ฌธ์—, a๋Š” 0๋ฒˆ์งธ... z๋Š” 25๋ฒˆ์งธ
  • alphabet ๋ฐฐ์—ด์—์„œ (๋‘ ๋ฒˆ์งธ ๋ฌธ์ž์—ด ์•ŒํŒŒ๋ฒณ์˜ ์•„์Šคํ‚ค์ฝ”๋“œ ๊ฐ’ - 97) ๋ฒˆ์งธ ์š”์†Œ๋ฅผ 1 ๊ฐ์†Œ์‹œํ‚จ๋‹ค.
    • ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์—ด๊ณผ ๋‘ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์˜ ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด ๋ฐฐ์—ด์˜ ์š”์†Œ๋Š” 0์ด ๋œ๋‹ค.
  • alphabet์˜ ์š”์†Œ๊ฐ€ 0์ด ์•„๋‹ˆ๋ผ๋ฉด flag๋ฅผ false๋กœ ๋ฐ”๊พผ ํ›„ for๋ฌธ์„ ์ข…๋ฃŒํ•œ๋‹ค.
  • flag๊ฐ€ true์ธ ๊ฒฝ์šฐ์—๋Š” Possible์„ false์ธ ๊ฒฝ์šฐ์—๋Š” Impossible์„ ์ถœ๋ ฅํ•œ๋‹ค.

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

var n = Int(readLine()!)!

for _ in 0..<n {
    let stringValue = readLine()!.split(separator: " ").map{String($0)}
    var alphabet = Array(repeating: 0, count: 26)
    var flag = true
    
    for s in stringValue[0]{
        alphabet[Int(exactly: s.asciiValue!)! - 97] += 1
    }
    for s in stringValue[1]{
        alphabet[Int(exactly: s.asciiValue!)! - 97] -= 1
    }
    
    for a in alphabet {
        if a != 0 {
            flag = false
            break
        }
    }
    print(flag ? "Possible" : "Impossible")
}
  • 92ms ์†Œ์š”
๋ฐ˜์‘ํ˜•