상세 컨텐츠

본문 제목

8931. 제로 D3

알고리즘/SWExpertAcademy

by 아리따운노을 2019. 12. 20. 18:48

본문

 

하루에 한 문제씩 풀고 싶지만... 지금은 알바를 하고 있어서 시간 나는대로 풀어볼 예정이다.

블로그도 처음 써보고 해서 서툴수 있지만 최대한 노력하겠다.

이 카테고리에는 삼성 SWExpertAcademy 에 있는 D3~D4 의 난이도 또는 Contest Problem을 풀어보겠다.

오늘은 첫날이니까 쉬운거로... ㅎㅎ;

 

대충 설명은 이렇다. 0이나오면 있던 바로 전의 숫자를 지우고, 그렇지 않으면 계속 진행하는 것이다.

stack을 이용하면 간단하게 풀 수 있을 것 같아서 stack을 이용했다.

1.0이면 pop, 그렇지 않으면 push

2.empty를 이용해 pop을 하면서 top 항목을 모두 더하기

3.출력

 

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
#include <iostream>
#include <stack>
using namespace std;
 
int main()
{
    cin.tie(NULL);
    cout.tie(NULL);
    ios_base::sync_with_stdio(false);
    int TC,K,num,ans;
    cin>>TC;
    for (int t=1;t<=TC;t++)
    {
        ans=0;
        stack<int>ARR;
        cin>>K;
        for(int i=0;i<K;i++){
            cin>>num;
            if(num!=0)
                ARR.push(num);
            else
                ARR.pop();
        }
        while(!ARR.empty())
        {
            ans+=ARR.top();
            ARR.pop();
        }
        cout<<"#"<<t<<' '<<ans<<'\n';
    }
    return 0;
}
 
cs

 

매우 쉬운 문제였지만 솔직히 말하면 while을 쓰지 않고도 풀 수 있었다.

이 글을 보는 분들은 while을 쓰지 않고 그냥 for문 안에서 해결하는 것을 추천한다.

 

아, 아마 이 글에서만 설명할 것 같긴 한데

 

1
2
3
4
5
 
    cin.tie(NULL);
    cout.tie(NULL);
    ios_base::sync_with_stdio(false);
 
cs

알고리즘 문제를 풀 때 이 구문을 꼭 작성하는 것을 추천드린다. 이 문제는 case가 적어서 크게 영향은 미치지 않았겠지만 test case가 만개 정도 되는 문제에서는 이것을 작성하지 않고 input만 받는대도 시간 초과가 일어날 수 있다.

 

 

 

 

'알고리즘 > SWExpertAcademy' 카테고리의 다른 글

8934. 팰린드롬 공포증 D4  (0) 2020.01.08
8840. 아바바바 D3  (0) 2020.01.07
9088. 다이아몬드 D4  (0) 2020.01.05
8993. 하지 추측 D4  (0) 2020.01.04
9229. 한빈이와 Spot Mart D3  (0) 2020.01.03

관련글 더보기

댓글 영역