https://school.programmers.co.kr/learn/courses/30/lessons/12973
같은 알파벳 2개가 붙어있는지 확인하는게 가장 중요한거 같았다
처음에는 같은 문자가 붙어있는지 확인하기 위해 인덱스를 활용하여 앞뒤를 비교했지만...
인덱스를 활용해서 제거를 하게 되면 배열 자체가 바뀌기 때문에 인덱스 오류가 발생하여 굉장히 꼬이게 되는 문제점이 있었다...
직접 배열을 관리하기 보다 문자가 붙어있는 걸 stack 을 활용하여 풀어보고자 했다
func solution(_ s:String) -> Int {
var stack = [String]()
var str = s.map{String($0)}
for i in 0..<s.count {
if !stack.isEmpty {
if stack.last! == str[i] {
stack.popLast()!
} else {
stack.append(str[i])
}
} else {
stack.append(str[i])
}
}
return stack.isEmpty ? 1 : 0
}
이 과정을 반복해서 stack 이 비어있다면 반복되는 문자로만 존재하기 때문에 1 을 반환,
stack 이 비어있지 않다면 연속적으로 같은 문자가 없기 때문에 0을 반환하게 됩니다
이 문제는 특이하게도 효율성 테스트가 존재하는데...
제출을 눌러놓고 다른 작업을 하게되면 테스트가 틀릴때가 있더라구요..?
다시 제출하면 다시 다 통과하구요..
이런 문제는 제출을 누르면 꼭 다 채점 할때까지 기다리는게 필수인거 같습니다!