๋ฐฑ์ค ๋ฌธ์ ๋ชจ์
๋ฌธ์ ๋งํฌ
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 ์์
'โจ๏ธ Language > swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ๋ฐฑ์ค 1475๋ฒ - ๋ฐฉ ๋ฒํธ (0) | 2023.03.26 |
---|---|
[Swift] ๋ฐฑ์ค 1919๋ฒ - ์ ๋๊ทธ๋จ ๋ง๋ค๊ธฐ (0) | 2023.03.25 |
[Swift] ๋ฐฑ์ค 13300๋ฒ - ๋ฐฉ ๋ฐฐ์ (0) | 2023.03.25 |
[Swift] ๋ฐฑ์ค 10807๋ฒ - ๊ฐ์ ์ธ๊ธฐ (0) | 2023.03.25 |
[Swift] ๋ฐฑ์ค 2577๋ฒ - ์ซ์์ ๊ฐ์ (0) | 2023.03.25 |