문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42588
문제 설명
여러개 탑이 있는데 왼쪽으로만 레이저를 쏨 자기보다 높은 위치의 탑에게만 송신가능.
자기 레이저를 몇번째 탑이 송신했는지 return 송신한 탑이없다면 0 return .
알고리즘
맨 왼쪽부터시작 - > 자기위치부터 맨 왼쪽까지 순서대로 높이를 확인하면서 자기보다 높이가 높다 그럼 위치 +1 을 answer 에 push_back
이거 그대로 백준에서 했다가 맞았었는데 재채점 뜨고 틀렸다고뜨더라고
다시 알고리즘
코드(백준 코드이다)
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
|
#include<iostream>
#include<stack>
using namespace std;
int main() {
int N;
scanf_s("%d", &N);
stack<pair<int,int>> s;
int num;
for (int i = 1; i <= N; i++) {
scanf_s(" %d", &num);
if (i == 1) {
s.push(make_pair(i, num));
printf("0 ");
continue;
}
while(!s.empty()){
if (s.top().second < num) {
s.pop();
}
else {
printf("%d ", s.top().first);
s.push(make_pair(i, num));
break;
}
}
if (s.empty()) {
s.push(make_pair(i, num));
printf("0 ");
}
}
}
|
cs |
'c++ > 프로그래머스' 카테고리의 다른 글
프로그래머스 : 서울에서 경산까지 (0) | 2020.04.07 |
---|---|
프로그래머스 : 카드게임 (0) | 2020.04.03 |
프로그래머스 : 체육복 (0) | 2020.04.02 |
프로그래머스 : 숫자야구 (0) | 2020.04.02 |
프로그래머스 : 등굣길 (0) | 2020.04.02 |