들여쓰기를 줄이는 코드

Subin·2024년 12월 24일

Algorithm

목록 보기
53/69

문제를 풀다가, 나는 들여쓰기가 3개 이하로 잘 줄여지지 않아서 다른 사람의 풀이를 보았다.

<내 풀이>

#include <string>
#include <iostream>
#include <vector>

using namespace std;

bool solution(string s)
{
    bool answer = true;
    // '('이 나오면 push, ')'이 나오면 pop을 함 (empty일 경우 pop이 안 되므로 false)
    // 모든 문자를 다 돌았는데도 empty가 아니면 남았다는 의미이므로 false
    vector<int> stack;
    for(char c: s)
    {
        if(c == '(')
        {
            stack.push_back(1);
        }
        else if(c == ')')
        {
            if(stack.empty()) 
                answer = false;
            else
                stack.pop_back();
        }
    }

    if(!stack.empty()) answer = false;

    return answer;
}

<다른 풀이>

#include<string>
#include <iostream>

using namespace std;

bool solution(string s)
{
    int n = 0;
    for (int i = 0; i < s.length(); i++) {
        if (n < 0)
            return false;
        if (s[i] == '(')
            n++;
        else if (s[i] == ')')
            n--;
    }
    return n == 0;
}

나는 벡터로 접근했지만, 다른 풀이는 단순 정수 연산을 사용했다.
그러면서 초반에 정수가 음수로 변하는 순간 false로 처리하여, 굳이 연속 if문을 쓰지 않도록 했다.

profile
성장하며 꿈꾸는 삶을 살아가고 있는 대학생입니다😊

0개의 댓글