Fascination
article thumbnail
Published 2021. 9. 15. 11:09
[C++] BOJ 17608 : 막대기 CODE/BOJ

[문제]

 

17608번: 막대기

아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로

www.acmicpc.net

 

 

[문제 풀이]

- 우선 막대기를 입력받으며 stack에 저장

- 하나씩 pop하며 가장 높은 막대기와 비교

- 맨 오른쪽 막대기는 무조건 보이는 것임

 

 

[코드]

#include <iostream>
#include<algorithm>
using namespace std;

int top=-1;
int stack[100000];


int main() {
    int tc=0,num=0;
    int count=0, pre=0, com=0;
    cin>>tc;
    cin.ignore();

    for(int i=0;i<tc;i++){// 막대기의 개수만큼 입력받기
        cin>>num;
        cin.ignore();
        stack[++top]=num;
    }

    com=stack[top--]; // 오른쪽 기준 가장 가까운 막대기의 높이 반환
    count++;
    while(top>-1){
        pre = stack[top--];
        if(com<pre) {// pre가 비교 숫자 com보다 높거나 같다면
            count++; // 개수 증가
            com = pre; // com update
        }
    }

    cout<<count<<endl;
    return 0;
}

 

 

[채점 결과]

* 4번을 틀렸던 이유는 같은 높이의 막대기도 보인다고 잘못 이해해서 틀렸었다,,

'CODE > BOJ' 카테고리의 다른 글

[C++] BOJ 2959 : 거북이  (0) 2021.09.17
[C++] BOJ 2752 : 세수정렬  (0) 2021.09.17
[C++] BOJ 11279 : 최대힙  (0) 2021.09.16
[C++] BOJ 1158 : 요세푸스 문제  (0) 2021.09.16
[C++] BOJ 12605 : 단어순서 뒤집기  (0) 2021.09.15
profile

Fascination

@euna-319

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!