#include <iostream> #include <cstdio> #include <vector> #include <algorithm> #include <string> #include <queue>  #include <cstring>  #include <functional> #include <list> #include <unordered_map> #include <map> #include <array> using namespace std; using ll = long long; int binaryTreeArray[2000]; int treeSize; int root = 1; int getTreeLength(int iint j) { vector<int> iVec; vector<int> jVec; while (i != 0) { iVec.emplace_back(i); i /= 2; } while (j != 0) { jVec.push_back(j); j /= 2; } auto _i = iVec.rbegin(); auto _j = jVec.rbegin(); while (*_i == *_j) { ++_i; ++_j; } return (iVec.rend() - _i) + (jVec.rend() - _j); } int main() { treeSize = 7; // 1부터 7까지 차있음. cout<<getTreeLength(1, 5)<<endl; }

c++이구 개선할 여지가 잔뜩 있긴 하지만

대충 이런 식으로 짜면 될듯

python도 기본적으로 같게 짜면 될듯,