백준

연속되는 문자에 관한 문제 풀이

화찌님 2023. 11. 11. 21:07

프로그래머스 - 짝지어 제거하기 

https://school.programmers.co.kr/learn/courses/30/lessons/12981

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

이 문제를 접했을때 직관적으로 while문(true) 안에 for문(문자열의 갯수)으로 작동하는 이중 반복문을 생각하고 풀었는데 시간초과가 났다.

다른 사람의 코드를 참고하였는데, 연속되는 문자에 관한 문제는 스택으로 접근하것이 옳은 방법이라고 생각 되어

까먹지 않기 위해 포스팅을 한다.

//다른사람 코드
//내코드와 비교했을때 2중 반복문을 사용하지 않음
//스택형식으로 풀었음(이렇게 푸는 문제가 맞는거 같다)
//연속된 문자 문제들은 stack을 고려하여 접근하자
func solution1(_ s:String) -> Int{
    var str = Array(s)
    var result: [Character] = []
    let s_len = str.count

    for i in 0..<s_len {
        if !result.isEmpty && result.last == str[i] {
            result.removeLast()
        } else {
            result.append(str[i])
        }
    }
    return result.isEmpty ? 1 : 0
}

* 연속된 문자 >> stack문제

* 문제 출제자의 의도를 생각하여 풀자

'백준' 카테고리의 다른 글

그래프 BFS DFS  (1) 2023.11.19
비밀지도  (1) 2023.11.12
[Swift] 진법 변환 radix  (0) 2023.11.11
백준 스위프트 2108 통계학  (0) 2023.01.10
백준 스위프트 1874 스택수열  (0) 2023.01.07