반응형
📄 [스택/큐] 탑 C++ Source Code
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
#define NONE 0
vector<int> solution(vector<int> heights) {
vector<int> answer;
// MARK: - 왼쪽으로 동시에 레이저 신호를 발사합니다.
while (!heights.empty()) {
bool isFind = false;
const int top = heights.back(); heights.pop_back();
// MARK: - 발사한 신호는 신호를 보낸 탑보다 높은 탑에서만 수신합니다. 또한, 한 번 수신된 신호는 다른 탑으로 송신되지 않습니다.
for (int index = heights.size() - 1; index >= 0; index--) {
if (top < heights[index]) { answer.push_back(index + 1); isFind = true; break; }
}
// MARK: 신호를 수신하는 탑이 없으면 0으로 표시합니다.
if (isFind == false) { answer.push_back(NONE); }
}
// MARK: - 맨 왼쪽부터 순서대로 탑의 높이를 담은 배열 heights가 매개변수로 주어질 때 각 탑이 쏜 신호를 어느 탑에서 받았는지 기록한 배열을 return 하도록 solution 함수를 작성해주세요.
std::reverse(answer.begin(), answer.end());
return answer;
}
📄 [스택/큐] 탑 Swift Source Code
import Foundation
let NONE = 0
func solution(_ heights:[Int]) -> [Int] {
var height = heights
var answer = Array<Int>()
while !height.isEmpty {
var isFind = false
guard let top = height.popLast() else { break }
// MARK : - 발사한 신호는 신호를 보낸 탑보다 높은 탑에서만 수신합니다. 또한, 한 번 수신된 신호는 다른 탑으로 송신되지 않습니다.
let length = height.count - 1
for index in stride(from: length, through: NONE, by: -1) where height[index] > top {
answer.append(index + 1); isFind = true; break
}
// MARK: - 신호를 수신하는 탑이 없으면 0으로 표시합니다.
if isFind == false { answer.append(NONE) }
}
// MARK: - 맨 왼쪽부터 순서대로 탑의 높이를 담은 배열 heights가 매개변수로 주어질 때 각 탑이 쏜 신호를 어느 탑에서 받았는지 기록한 배열을 return 하도록 solution 함수를 작성해주세요.
return answer.reversed()
}
🚀 REFERENCE
반응형
'# 사용하지 않는 게시글 > 알고리즘 문제' 카테고리의 다른 글
[프로그래머스 - 탐색] 타겟 넘버 (0) | 2019.04.14 |
---|---|
[프로그래머스 - 힙] 더 맵게 (0) | 2019.04.14 |
[프로그래머스 - 스택/큐] 기능개발 (0) | 2019.04.08 |
[프로그래머스 - 해시] 전화번호 목록 (0) | 2019.04.08 |
[프로그래머스 - 해시] 위장 (0) | 2019.04.06 |
댓글