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

1. [문제]

 

17608번: 막대기

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

www.acmicpc.net

 

 

2. [문제 풀이]

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

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

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

 

 

3. [코드]

<c++ />
#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. [채점 결과]

* 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

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