프로그래머스 탑
본문 바로가기
알고리즘 모음집/New 알고리즘

프로그래머스 탑

by KyeongMin 2020. 7. 27.
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/42588?language=cpp

 

코딩테스트 연습 - 탑

수평 직선에 탑 N대를 세웠습니다. 모든 탑의 꼭대기에는 신호를 송/수신하는 장치를 설치했습니다. 발사한 신호는 신호를 보낸 탑보다 높은 탑에서만 수신합니다. 또한, 한 번 수신된 신호는 다

programmers.co.kr

#include <string>
#include <vector>
#include <stack>
#include <iostream>
using namespace std;

vector<int> solution(vector<int> heights) {
	vector<int> answer;
	stack<int>s; //데이터 거꾸로 담기
	for (int i = heights.size()-1; i >= 1; i--) {
		int flag = 0;// 수신 받는곳 없는거 체크 변수
		for (int j = i - 1; j >= 0; j--) {
			if (heights[i] < heights[j]) {
				s.push(j+1);
				flag = 1;// 들어간거 체크 
				break;
			}
		}
		if (flag==0) {
			s.push(0);
		}
	}
	s.push(0);
	while (!s.empty()) {
		answer.push_back(s.top()); s.pop();
	}
	return answer;
}

이문제의 포인트는 뒤에서부터 그냥 이중 포문을 이용해서 조건에 맞으면 그때 저장해놓고

마지막으로 스택을 이용할 필요는 없지만 스택의 성질을 이용해서 answer에 다시 값을 저장하는 식으로 구현 했습니다.

그냥 백터에 저장하고 뒤에서 부터 answer에 저장해도되고 그냥 reverse 메소드를 이용해서 바꾸고 리턴해도 됩니다. 

 

 

스택 문제라서 스택을 쓴것이니 참고 해주세요. 

728x90
반응형

'알고리즘 모음집 > New 알고리즘' 카테고리의 다른 글

16235 나무 재테크  (0) 2020.08.12
프로그래머스 주식가격  (0) 2020.08.12
15686 치킨배달  (0) 2020.07.27
프로그래머스 다리를 지나는 트럭  (0) 2020.07.25
15685 드래곤 커브  (0) 2020.07.25

댓글