본문 바로가기

백준179

백준 15967 c++ "에바쿰" -PlusUltraCode- https://www.acmicpc.net/problem/15967 [필자 사고]이 문제는 세그먼트 트리 자료구조를 이용하여 풀 수 있다.다만 Update하는 과정에서 특정 idx만 업데이트가 아닌 구간 udpate이므로 Propagation을 통해 지연 전파 알고리즘을 적용 해야된다.필자는 lazy배열 크기를 설정하는데 tree배열 크기와 같게 해야되는데 N+1로 초기화를 해버렸다.조심해야 겠다.[코드 해설]2. 입력 처리Input() 함수는 프로그램의 초기 입력값을 처리하는 역할을 합니다. 배열의 크기(N), 구간 합 쿼리 개수(Q1), 구간 업데이트 쿼리 개수(Q2)를 입력받고, 배열(arr)의 값을 저장합니다. 세그먼트 트리(tree)와 Lazy Propagation 배열(lazy)은 계산 효율성.. 2025. 1. 17.
백준 7469 c++ "K번째 수" -PlusUltraCode- https://www.acmicpc.net/problem/7469[필자 사고]이 문제는 2차원 세그먼트 트리 구조를 이용해야 풀 수 있는 문제이다.이 문제만의 매력은 lower_bound를 사용하여 몇번째인지 찾은 뒤 이진 탐색을 통해 K번째 수를 찾는 과정이다.필자는 이진 탐색을 이용해 K번째 수를 찾는 방법을 생각하지 못하여 틀린 문제이다. 많은걸 배울 수 있어서 좋은 문제 같다.[코드 해설]2. 입력 처리 (Input 함수)Input 함수는 문제의 입력 데이터를 처리합니다.N과 M을 입력받습니다.N: 배열의 크기M: 질의(query)의 개수배열 arr를 초기화하고 크기 N만큼 값을 입력받습니다.이 함수는 입력 데이터를 효율적으로 관리하고, 세그먼트 트리를 생성하기 위한 기초 데이터를 제공합니다.3... 2025. 1. 16.
백준 13544 c++ "수열과 쿼리 3" -PlusUltraCode- https://www.acmicpc.net/problem/13544 [필자 사고]이 문제는 세그먼트 트리를 이용하는 거지만처음보는 문제 유형이다.세그먼트 2차원 설정 즉 vector> tree 방식으로 2차원 트리를 작성하는 머지소트 알고리즘을 필요로 하는 문제이다. 필자는 처음에는 이해가 안갔지만 코드를 게속 쳐보면서 이해를 시켰다.또한 upper_bound 와 lower_bound를 언제 사용할지에 대해서도 감이 잡혔다.좋은 문제 였다.[코드 해설]2. 입력 처리 (Input 함수)Input 함수는 세그먼트 트리와 입력 데이터를 초기화합니다.N 입력배열의 크기 N을 입력받습니다.tree 벡터 초기화세그먼트 트리를 저장할 벡터 tree를 크기 4 * N으로 초기화합니다. 각 노드는 특정 범위를 나타내며.. 2025. 1. 16.
백준 8155 c++ "Postering" -PlusUltraCode- https://www.acmicpc.net/problem/8155  [필자 사고]이 문제는 플래 5에 있는 히스토그램을 한번 풀어봤으면 쉽게 응용하여 풀 수 있는문제이다.특히 스택을 활용하면 코드길이를 엄청 줄일 수 있다.아래는 코드의 해설이다.[코드 해설]1. 입력 처리입력값 n: 빌딩의 개수.각 빌딩의 정보 (d, h):d: 빌딩의 위치 (문제에서 사용되지 않음).h: 빌딩의 높이.입력은 한 줄에 하나의 빌딩 정보 (d, h) 형식으로 주어집니다.2. 변수 초기화stack heights:현재 활성화된(유효한) 빌딩 높이를 저장하는 스택입니다.이 스택은 현재까지 고려된 높이를 관리하여 겹치는 포스터를 줄이는 데 사용됩니다.int posters:필요한 포스터의 수를 저장하는 변수로, 초기값은 0입니다.3.. 2025. 1. 16.