2022. 10. 26. 16:41ใAlgorithm
๋ฌธ์ ์ด๋ฆ
๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/1543
์ฒ์ ๋์ ํ์ด
์ฒ์์๋ ๋จ์ํ ์ฒซ ๋ฒ์งธ๋ถํฐ ํ์ํ์ฌ target๊ณผ ๋ง์ง์์ผ๋ฉด idx๋ฅผ ๋ฆฌ์ ํ๋ ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํ์๋ค. ๊ทธ๋ฌ๋ค๊ฐ ๋๊ธด๊ฐ์ด target[idx]๊ฐ๊ณผ ๊ฐ๋ค๋ฉด ์ด์ด์ ์ธ๋ฑ์คํ์์ ํด์ค์ผํ๋ ๋ฐ๋ก๋ฅผ ์ฐพ์๋ค.
ํ์ง๋ง ๊ทธ๋๋ ํ ์คํธ์ผ์ด์ค๋ฅผ ์ ๋ถ ํต๊ณผํ์ง ๋ชปํ๋ค.
๊ทธ๋์ ๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ์ฐพ์๋ดค๋ค.
import Foundation
let document = readLine()!.map{String($0)}
let target = readLine()!.map{String($0)}
var cnt = 0
var idx = 0
for i in 0...document.count-1 {
if target[idx] == document[i] {
idx += 1
if idx == target.count {
cnt += 1
idx = 0
}
} else {
idx = 0
if target[idx] == document[i] {
idx += 1
}
}
}
print(cnt)
๋ค๋ฅธ ์ฌ๋์ ํ์ด
import Foundation
var doc = readLine()!
let target = readLine()!
var cnt = 0
var index = doc.range(of: target)?.upperBound
while index != nil {
cnt += 1
doc = String(doc[index!...])
index = doc.range(of: target)?.upperBound
}
print(cnt)
์ค์ํํธ์์ ๋ฌธ์์ด์ ์ด๋ป๊ฒ ๋ค๋ฃจ๊ณ ์๋์ง ์ ์ ์๋ ํ์ด์ด๋ค.
๋จผ์ ๋ฌธ์์ด์ ๋ํด range(of:)๋ฅผ ํ๋ฉด ๋ฐฐ์ด๋ก ๋ฐ์ก์๋ 0..<์ฐพ๋ ๋ฌธ์์ด์ ๋+1์ด ๋๋ค. ์ฆ ์ฌ๊ธฐ์ upperBound๋ฅผ ํ๊ฒ๋๋ฉด ์ฐพ๋ ๋ฌธ์์ด์ ๋ +1์ธ ์ธ๋ฑ์ค๊ฐ ๋์ค๊ฒ ๋๊ณ doc[index!...]๋ฅผ ํ๊ฒ๋๋ฉด ๊ทธ ๋ถ๋ถ๋ถํฐ ๋ค์ ๋ฌธ์์ด์ ๊ตฌ์ฑํ๊ฒ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ก ์๊ฒ๋ ์ฌ์ค์
var str: String = "abc"์ผ๋ str[str.endIndex...]๋ ๋ฐํ์์๋ฌ๋ฅผ ๋ฐ์์ํค์ง ์๋ ๋ค๋ ๊ฒ์ด๋ค. ์ด ๋๋ฌธ์ ์์ while๋ฌธ์์ doc[index!...]๋ฅผ ํ ๋ index๊ฐ boundary์ธ์ ๊ฐ์ด๋ผ๋ ์๋ฌ๋ฅผ ๋ฐ์์ํค์ง ์๋๊ฒ์ด๋ค.
๋ ๋ค๋ฅธ์ฌ๋์ ํ์ด
๋์ ๋ฐฉ๋ฒ์์ ๋ฐ๋ก๋ฅผ ๋ชป์ฐพ์๋ ๊ทธ๋ฅ ์ ๋ถ๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
๊ทธ ๋ฐฉ๋ฒ์ด ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ด๋ค.
ํญ์ ์์ ํ์๋ ๋ฐฉ๋ฒ์ด๋ผ๋ ๊ฒ์ ์ธ์งํ๊ณ ๋ฌธ์ ๋ฅผ ํ์ด์ผ๊ฒ ๋ค.
import Foundation
var doc = Array(readLine()!)
let target = Array(readLine()!)
func findMatching(_ idx: Int) -> Int {
var i = idx
var tIdx = 0
var cnt = 0
while i < doc.count {
if target[tIdx] == doc[i] {
if tIdx == target.count-1 {
cnt += 1
tIdx = 0
} else {
tIdx += 1
}
} else {
tIdx = 0
}
i += 1
}
return cnt
}
var maxVal = 0
for i in 0..<doc.count {
maxVal = max(maxVal, findMatching(i))
}
print(maxVal)
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - ํ๋ ฌ(Swift) (0) | 2022.10.27 |
---|---|
๋ฐฑ์ค - ์๋ฆฌ๊ณต ํญ์น(Swift) (0) | 2022.10.26 |
๋ฐฑ์ค - ์ ๋ฌถ๊ธฐ(Swift) (0) | 2022.10.25 |
๋ฐฑ์ค - ๊ธฐํ์ค(Swift) (0) | 2022.10.25 |
๋ฐฑ์ค - ๋ณด์๋๋(Swift) (0) | 2022.10.25 |