N

(프로그래머스 c++)탑 본문

프로그래머스 알고리즘/2단계

(프로그래머스 c++)탑

naeunchan 2020. 5. 6. 11:58
728x90
반응형

for문으로 간단하게 풀 수 있는 문제..!

우선 맨 처음 송신탑은 신호를 받을 수 있는 탑이 없으니 answer에 0을 넣고 시작한다.

그리고 for문은 heights[1]부터 시작하도록 하였다.

이제 0 ~ i - 1 까지 탑의 높이를 확인하면서 반복문을 돌면 된다.

단, j는 i - 1부터 시작해서 j가 0과 같을 때까지 거꾸로 반복문을 돌도록 한다.

송신탑의 높이가 수신탑의 높이보다 작으면 answer에 j + 1을 넣어준다.

만약 j == 0이면 수신할 수 있는 탑이 없으니 0을 넣어준다..!

간단하다..!

(수신탑이 없으면 0, 있으면 해당 탑의 위치를 나타내어야 하기 때문..!)

 

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> heights) {
    vector<int> answer;
    
    answer.push_back(0);
    for(int i = 1; i < heights.size(); i++)
    {
        for(int j = i - 1; j >= 0; j--)
        {
            if(heights[i] < heights[j])
            {
                answer.push_back(j + 1);
                break;
            }
            else if(j == 0)
                answer.push_back(0);
        }
    }
    return answer;
}
728x90
반응형