728x90
2941번은 특정 문자열이 포함되어 있는지 확인하고 이를 어떻게 인식할지에 대해서 물어보는 문제이다.
이 문제의 경우 처음에 고생을 좀 했다. 첫 논리적 흐름은
1. 특정 문자열이 contain 되어 있는지
2. 있다면 어떻게 이를 제외하고 count를 할 것인지 등에 대한 고민을 하였다.
이는 생각보다 복잡하여 골머리를 앓았는데 매우 적합한 메서드가 있었다.
이 문제를 풀면서 생각한 논리적 흐름은
- 특정 문자열의 배열을 만들어준다.
- 배열 내의 문자열을 input에서 포함하고 있다면 "*"로 변환시켜준다.
- 변환된 *를 포함한 문자열의 개수를 센다.
사실 이 문제에서 아직도 이해가 가지 않는 부분은
"dz="를 변환할 때, "d" + "z=" 일 수도 있고(count: 2) "dz=" 일수도 있는데(count: 1) 이 부분을 고려하지 않아도 되는 걸까??
하는 의문이 남는다... 하지만 일단 논리적으론 문제 없으니 패쓰~
* 2941번
import Foundation
let croatia = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="]
var input = readLine()!
croatia.forEach { croatia in
input = input.replacingOccurrences(of: croatia, with: "*")
}
print(input.count)
정리(Today I Learned)
- replacingOccurrences() 메서드는 쉽고 빠르게 특정 문자열을 대체 문자열로 바꿔준다.
'TIL > 알고리즘 공부' 카테고리의 다른 글
백준 1712번 Swift 알고리즘 연습 (0) | 2022.08.22 |
---|---|
백준 1316번 Swift 알고리즘 연습 (0) | 2022.08.22 |
백준 5622번 Swift 알고리즘 연습 (0) | 2022.08.22 |
백준 2908번 Swift 알고리즘 연습 (0) | 2022.08.22 |
백준 1152번 Swift 알고리즘 연습 (0) | 2022.08.16 |