일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- node.js
- 네이버 블로그
- amqplib
- rabbitmq
- 웹소켓
- kwoss2341
- Selenium
- 서이추 자동
- 실시간
- 서이추 매크로
- 국세청
- Java
- 서로이웃추가 자동
- nodejs
- Node
- 웹소켓 서버
- 네이버 블로그 이웃추가 자동
- 크롤링
- 스크래퍼
- 크롤러
- Selenium 네이버 블로그
- 셀레니움
- 실시간 웹소켓 서버
- socket.io
- 서로이웃추가 매크로
Archives
- Today
- Total
defaultK
[프로그래머스] (이진트리 탐색) 카카오 길 찾기 게임 c++ 본문
programmers.co.kr/learn/courses/30/lessons/42892
코딩테스트 연습 - 길 찾기 게임
[[5,3],[11,5],[13,3],[3,5],[6,1],[1,3],[8,6],[7,2],[2,2]] [[7,4,6,9,1,8,5,2,3],[9,6,5,8,1,4,3,2,7]]
programmers.co.kr
기본적인 아이디어.
y축 내림차순으로 정렬하면
x값 비교 만으로 차례대로 트리가 구현.
트리 구현 후 전위순회 , 후위순회.
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
bool cmpy(vector <int> a, vector <int> b)
{
return a[1]>b[1];
}
struct tree{
int key;
int idx;
struct tree *left;
struct tree *right;
};
tree t[10000];
tree* insertnode(tree *p,int x,int i)
{
if(p==NULL)
{
t[i].key=x;
t[i].idx=i+1;
t[i].right=NULL;
t[i].left=NULL;
return &t[i];
}
else if(x<p->key)
{
p->left=insertnode(p->left,x,i);
}
else
{
p->right=insertnode(p->right,x,i);
}
return p;
}
void preorder(tree* root,vector<int> &pre)
{
if(root)
{
pre.push_back(root->idx);
preorder(root->left,pre);
preorder(root->right,pre);
}
}
void postorder(tree* root,vector<int> &post)
{
if(root)
{
postorder(root->left,post);
postorder(root->right,post);
post.push_back(root->idx);
}
}
//https://programmers.co.kr/learn/courses/30/lessons/42892
vector<vector<int>> solution(vector<vector<int>> nodeinfo) {
vector<vector<int>> answer;
vector <int> pre;
vector <int> post;
int n=nodeinfo.size();
tree* root=NULL;
for(int i=0; i<n; i++)
{
nodeinfo[i].push_back(i);
}
sort(nodeinfo.begin(),nodeinfo.end(),cmpy);
root=insertnode(root,nodeinfo[0][0],nodeinfo[0][2]);
for(int i=1; i<n; i++)
{
insertnode(root,nodeinfo[i][0],nodeinfo[i][2]);
}
preorder(root,pre);
postorder(root,post);
answer.push_back(pre);
answer.push_back(post);
return answer;
}
트리는 자주 사용할 것 같으니
구현을 잘 해놓자.
'알고리즘 ( C++ ) > 프로그래머스' 카테고리의 다른 글
[프로그래머스] [1차] 카카오 추석 트래픽 c++ (0) | 2021.01.20 |
---|---|
[프로그래머스] 카카오 무지의 먹방 라이브 c++ (0) | 2021.01.20 |
[프로그래머스] 카카오 외벽 점검 c++ (0) | 2021.01.18 |
[프로그래머스] (그리디) 구명보트 c++ (0) | 2021.01.10 |
[프로그래머스] 카카오 기둥과 보 설치 c++ (0) | 2021.01.09 |
Comments