https://school.programmers.co.kr/learn/courses/30/lessons/42892
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <bits/stdc++.h>
struct Node {
int id;
int x, y;
Node* left;
Node* right;
};
bool cmp (Node node1, Node node2) {
if (node1.y == node2.y) {
return node1.x < node2.x;
}
return node1.y > node2.y;
}
void insert(Node* p, Node* c) {
if (p->x > c->x) {
if (p->left == nullptr){
p->left = c;
}
else {
insert(p->left, c);
}
}
else {
if (p->right == nullptr) {
p->right = c;
}
else {
insert(p->right, c);
}
}
}
void preorder(std::vector<int> & ans, Node* node) {
if (!node) return;
ans.push_back(node->id);
preorder(ans, node->left);
preorder(ans, node->right);
}
void postorder(std::vector<int> & ans, Node* node) {
if (!node) return;
postorder(ans, node->left);
postorder(ans, node->right);
ans.push_back(node->id);
}
std::vector<std::vector<int>> solution(std::vector<std::vector<int>> nodeinfo) {
std::vector<Node> nodes;
for (int i = 0; i < nodeinfo.size(); ++i) {
nodes.push_back({i + 1, nodeinfo[i][0], nodeinfo[i][1], nullptr, nullptr});
}
std::sort(nodes.begin(), nodes.end(), cmp);
Node* root = &nodes[0];
for (int i = 1; i < nodes.size(); ++i) {
insert(root, &nodes[i]);
}
std::vector<std::vector<int>> answer = {{}, {}};
preorder(answer[0], root);
postorder(answer[1], root);
return answer;
}
'카카오 > 2019 KAKAO BLIND RECRUITMENT' 카테고리의 다른 글
[C++] 2019 KAKAO BLIND RECRUITMENT - 매칭점수 (0) | 2023.12.09 |
---|---|
[C++] 2019 KAKAO BLIND RECRUITMENT - 후보키 (1) | 2023.12.08 |
[C++] 2019 KAKAO BLIND RECRUITMENT - 실패율 (1) | 2023.12.08 |
[C++] 2019 KAKAO BLIND RECRUITMENT - 오픈채팅방 (1) | 2023.12.08 |
[C++] 2019 KAKAO BLIND RECRUITMENT - 무지의 먹방 라이브 (1) | 2023.12.07 |