-
[백준/BOJ] 10799번 : 쇠막대기 _C/C++알고리즘/백준(BOJ) 2022. 2. 17. 01:16728x90반응형
>문제
>접근방법
레이저를 만나면 조각 개수는 막대 하나 당 '레이저개수+1 개 가 된다. 막대기가 여러개인걸 구분하려면 스택을 쓰는게 편하겠다.
>알고리즘
1. 배열에 괄호들을 입력받는다.
2. 스택을 생성한다.
3. ( 만나면 push
4. 레이저 () 를 만나면 스택에 있는 ( 의 개수를 sum에 더한다.
5. ) 만나면 sum에 1 더하고 pop 시킨다.
>코드
#include <stdio.h> #include <stack> using namespace std; char str[100001]; int i, sum = 0; int main(void){ stack<char>s; //스택 생성 scanf("%s", str); for(i=0; str[i] != 0; i++){ if(str[i] == '(' && str[i+1] == ')'){ //raser sum += s.size(); i++; } else if(str[i] == '('){ s.push(str[i]); } else{ sum++; s.pop(); } } printf("%d", sum); return 0; }
>결과
>결론
보자마자 어려운 문제인거 같아서 걱정했는데 한번에 풀려서 다행이다. 기록하면서 항상 생각하는 거지만 접근방법이랑 알고리즘을 적는게 제일 어려운 것 같다. 왜 이렇게 풀었는지 이유를 적는게 너무 어렵다. 잠와서 더 그런건가. 얼른 누워야겠다
LIST'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
[백준/BOJ] 1652번 : 누울 자리를 찾아라 _Python (0) 2022.02.24 [백준/ BOJ] 5555번 : 반지 _Python (0) 2022.02.23 [백준/BOJ] 3986번 : 좋은 단어 _C/C++ (0) 2022.02.15 [백준/BOJ] 10773번 : 제로 _C/C++ (0) 2022.02.14 [백준/BOJ] 9012번 : 괄호 _C언어 (0) 2022.02.13