[백준] 20364번 부동산 다툼 (C++)

2025. 8. 23. 18:36·Algorithm
728x90

https://www.acmicpc.net/problem/20364

 

 

이 문제는 이진트리 모양으로 땅이 구성되며 오리들이 차지하려는 땅이 주어질때 각 오리들이 땅을 차지하는 경우, 못차지하는 경우를

출력하는 문제이다.

 

이진트리 모양이기 때문에 하나의 노드는 최대 2개의 자식노드를 가질 수 있으며 그 자식노드들의 부모노드에 접근하기 위해서는

자식 노드 / 2를 하면 부모노드에 접근할 수 있다.

 

그렇다면 오리들이 차지하려는 땅에서 루트 노드(1)까지 올라가며 차지된땅인지만 확인하면 된다고 생각하였다.

만약 차지된 땅이면 갈 수 없는 땅이기 때문에 앞에 차지된 땅을 출력하였고 1까지 갔을때

차지된 땅을 만나지 않았으면 갈 수 있다고 생각하여 0을 출력하였다.

따라서 시간복잡도는 계속 2로 나누기 때문에 O(Q log N)이다.

 

 

정답코드

#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
#define endl "\n"
#define MAX 1e9

struct coordinate {
    int x;
    string s;
    vector<int> v;
};

int dx[] = {-1, 0, 1, 0, 1, -1, -1, 1};
int dy[] = {0, 1, 0, -1, -1, 1, -1, 1};
int N, Q;
bool tree[1100000];

void solve() {

}

void input() {
    cin >> N >> Q;

    for(int i = 0; i < Q; i++) {
        int a;
        cin >> a;
        int tmp = a;
        int res = 0;
        bool flag = false;
        while(tmp != 1) {
            if(tree[tmp]) {			// 1까지 올라갈때 차지된 땅을 만나는 경우
                flag = true;
                res = tmp;
            }
            tmp /= 2;
        }
        if(flag) {
            cout << res << endl;
        }
        else {
            tree[a] = true;
            cout << 0 << endl;
        }
    }
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);

    input();
    solve();
}

 

 

728x90
저작자표시 (새창열림)

'Algorithm' 카테고리의 다른 글

[백준] 2234번 성곽 (C++)  (0) 2025.08.25
[백준] 최소공통조상 LCA 11437번 (C++)  (0) 2025.08.24
[백준] 3055번 탈출 (C++)  (0) 2025.08.22
[백준] 11559번 Puyo Puyo (C++)  (0) 2025.08.21
[백준] 16562번 친구비 (C++)  (0) 2025.08.20
'Algorithm' 카테고리의 다른 글
  • [백준] 2234번 성곽 (C++)
  • [백준] 최소공통조상 LCA 11437번 (C++)
  • [백준] 3055번 탈출 (C++)
  • [백준] 11559번 Puyo Puyo (C++)
쿨쿨.
쿨쿨.
  • 쿨쿨.
    All of the life
    쿨쿨.
  • 전체
    오늘
    어제
    • 분류 전체보기 (285) N
      • Programming (52) N
        • C, C++ (18)
        • Python (6)
        • Java (1)
        • HTML,CSS,JS (3)
        • SQL(DB) (13)
        • SpringBoot (8) N
        • Android (2)
        • CI,CD (1)
      • Algorithm (173)
        • Review (4)
      • Security (14)
        • WebHacking (3)
        • Websecurity (11)
      • OS (19)
        • Linux (12)
        • Mac os (2)
      • 머신러닝 (1)
      • CS(Computer Science) (12)
        • 컴퓨터 네트워크 (3)
        • 컴퓨터 구조 (1)
        • 인공지능 (8)
      • Docker (2) N
      • Dev Book Review (3)
        • Clean Code (1)
        • Effective Java (0)
        • Real MySQL (2)
      • SWM (1)
      • Review (6)
      • AWS (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Bandit
    c언어
    다이나믹 프로그래밍
    그래프 이론
    Leviathan
    재귀
    누적합
    WebSecurity
    우선순위 큐
    시뮬레이션
    투포인터
    wargame
    브루트포스
    깊이우선탐색
    백트래킹
    코딩
    DP
    다익스트라
    구현
    트리
    linux
    이분탐색
    그리디
    DFS
    우선순위큐
    정렬
    BFS
    에라토스테네스의 체
    비트마스킹
    백준
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.6
쿨쿨.
[백준] 20364번 부동산 다툼 (C++)
상단으로

티스토리툴바