티스토리 뷰

반응형


#. Problem

* The copyright in this matter is in Inflearn



#. Resolution Process

  1. Read and understand problem

  2. Redefine the problem + abstract

  3. Create solution plan (select Algorithm, Data structure)

  4. Prove the plan (check performance time and usage memory)

  5. Carry out the plan

  6. Look back on the plan and find a way to improve it


#. Solve

  1. 괄호 판별 문제는 보통 stack 을 사용하여 풀었던 것 같다.

     단순하게 입력받은 문자열을 한 문자씩 탐색하면서 '(' 가 나오면 push 해주고 ')'가 나오면 pop 해주면 된다.

     마지막에 stack 에 남은 원소가 0개라면 괄호의 개수가 일치하는 것이고, 그렇지않다면 일치하지 않는 것이다.


#. Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include<stdio.h>
#include <stack>
 
using namespace std;
 
int main() {
    freopen("input.txt""rt", stdin);
    char a[30];
    stack<int> s;
    int i;
 
    scanf("%s"&a);
 
    if (a[0== ')')
    {
        printf("NO");
 
        return 0;
    }
 
    for (i = 0; a[i] != '\0'; i++)
    {
        if (a[i] == '(')
            s.push(1);
        else
        {
            if (s.size() == 0)
            {
                printf("NO");
 
                return 0;
            }
 
            s.pop();
        }
    }
 
    if (s.size() == 0)
        printf("YES");
    else
        printf("NO");
 
    return 0;
}
cs


#. Other Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
 
using namespace std;
 
int main(){
    //freopen("input.txt", "rt", stdin);
    char a[100];
    int i, cnt=0;
 
    scanf("%s"&a);
 
    for(i=0; a[i]!='\0'; i++){
        if(a[i]=='(') cnt++;
        else if(a[i]==')') cnt--;
 
        if(cnt<0break;
    }
    if(cnt==0printf("YES\n");
    else printf("NO\n");
 
    return 0;
}
cs

stack을 사용하지 않고 간략하게 풀어내셨다.

굳이 stack을 사용하지 않으면 짜잘한 조건문이 필요없어질텐데.. 

항상 모든 문제를 어렵게만 생각하고 접근하려는 것 같다..

(12~14) 여기서는 '(' 괄호가 나오면 cnt++ ')' 괄호가 나오면 cnt-- 해주면서 괄호 검사를 해주고 있다.

           cnt가 음수가 될 경우 ')' 괄호가 더 많거나, 먼저 나오는 경우가 되므로 바로 break 해주고 결과를 출력해주면 된다.

문제를 풀 때 더 쉽게 접근하기위해 고민을 충분히 해볼 필요가 있다.


#. Result

  - Input --------------------------------------------------------

(()(()))(()

------------------------------------------------------------------


  - Output --------------------------------------------------------

NO

------------------------------------------------------------------



반응형

'PS > Problem_Solving' 카테고리의 다른 글

[Inflearn] 자릿수의 합  (0) 2020.04.20
[Inflearn] 모두의 약수  (0) 2020.04.20
[Inflearn] 영어단어 복구  (0) 2020.04.20
[inflearn] 숫자만 추출(Amazon interview source)  (0) 2020.04.19
[BOJ] 17614번. 369  (0) 2020.04.19
댓글
최근에 올라온 글
최근에 달린 댓글
링크
Total
Today
Yesterday