๋ฐ์ํ
๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/10809
๋ด๊ฐ ํผ ํ์ด
- ์ ๋ ฅ๋ฐ์ ๋ฌธ์๋ฐฐ์ด line / ๊ฒ์ฌ๊ฐ ์๋ฃ๋ ๊ธ์๋ฅผ ๋ฃ์ด์ฃผ๋ char ๋ฐฐ์ด left / ์ ๋ต๋ฐฐ์ด answer
- ์ ๋ต ๋ฐฐ์ด์๋, ๋ฑ์ฅํ์ง ์์ ๋ฌธ์๋ -1 ์ด ๋ค์ด๊ฐ์ผํ๊ธฐ ๋๋ฌธ์, ์ฐ์ -1์ 26๊ฐ ์ฑ์ ๋ค. (a...z๋ 26๊ฐ)
- ๋๋ line์์ ํ๊ธ์์ฉ for in ๊ตฌ๋ฌธ์ผ๋ก ๋ฐ์์, ํด๋น char์ asciiValue๋ฅผ ํ์ฉํ์ฌ ๋ช๋ฒ์งธ ์ํ๋ฒณ์ธ์ง answer๋ฐฐ์ด์ ์ธ๋ฑ์ค ๊ฐ์ ๊ตฌํ๋ค.
- ๊ทธ๋ฆฌ๊ณ ๊ฒ์ฌ๊ฐ ์๋ฃ๋ ๋จ์ด๋ left์ ๋ฃ์ด์ค์ผ๋ก์จ, ์ํ๋ฒณ์ด ๋๊ฐ ์ด์ ๋ฑ์ฅํ๊ฒ ๋๋ฉด, ์ฒซ๋ฒ์งธ ๋ฑ์ฅํ ์ธ๋ฑ์ค๊ฐ์ผ๋ก ๋ค์ด๊ฐ๊ฒ๋ ์ค์ ํด์ฃผ์๋ค.
import Foundation
var line = Array(readLine()!)
var left: [Character] = []
var answer = [Int](repeating: -1, count: 26)
for i in 0..<line.count {
let ch = line.removeFirst()
if left.contains(ch) {
continue
}else {
answer[Int(ch.asciiValue!)-97] = i
}
left.append(ch)
}
print(answer.map { "\($0)" }.joined(separator: " "))
๋ค๋ฅธ ์ฌ๋ ํ์ด
a ~ z ๊น์ง ์์คํค ์ฝ๋๋ก ๋ฐ๊ฟ์ i์ ๋ฃ์ด์ฃผ๊ณ i๊ฐ์ ๋ค์ ๋ฌธ์๋ก ๋ฐ๊ฟ์ char์ ๋ฃ์ด์ค๋ค. array s ์ char์ด ํฌํจ๋์ด ์์ผ๋ฉด s.index๋ฅผ ํตํด์ ๋ช๋ฒ์งธ์ ์๋์ง ์ถ๋ ฅํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ค. ์์คํค์ฝ๋๋ฅผ ์ด์ฉํ๋ ๋ฐฉ์์ ๋์ผํ์ง๋ง, ์ด๋ฅผ ์ ๋ต๋ฐฐ์ด์ ๋ฃ์ด์ฃผ๋ ๋ฐฉ์์์ ์ฐจ์ด๊ฐ ์กฐ๊ธ ์์๋ค.
let s = Array(readLine()!)
for i in Character("a").asciiValue!...Character("z").asciiValue! {
var char = Character(UnicodeScalar(i))
if s.contains(char){
print("\(s.index(of: char)!)",terminator: " ")
}else{
print("-1", terminator: " ")
}
}
๋ฐ์ํ
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] (Swift) 10820๋ฒ - ๋ฌธ์์ด ๋ถ์ (0) | 2022.02.16 |
---|---|
[๋ฐฑ์ค] (Swift) 2743๋ฒ - ๋จ์ด ๊ธธ์ด ์ ๊ธฐ (0) | 2022.02.16 |
[๋ฐฑ์ค] (Swift) 10808๋ฒ - ์ํ๋ฒณ ๊ฐ์ (0) | 2022.02.13 |
[๋ฐฑ์ค] (Swift) 1918๋ฒ - ํ์ํ๊ธฐ์ (0) | 2022.02.13 |
[๋ฐฑ์ค] (Swift) 1935๋ฒ - ํ์ ํ๊ธฐ์2 (0) | 2022.02.11 |