문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42588

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 문제 설명 

 

여러개 탑이 있는데 왼쪽으로만 레이저를 쏨 자기보다 높은 위치의 탑에게만 송신가능. 

자기 레이저를 몇번째 탑이 송신했는지 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
ariz1623