20250725 baekjoon
This commit is contained in:
parent
9de4b06813
commit
6db33b085a
41
code_study/Baekjoon/c/2805.c
Normal file
41
code_study/Baekjoon/c/2805.c
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
long long cutTree(const int* tree, int treeNum, int cuttingHeight);
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
int N, M;
|
||||||
|
scanf("%d %d",&N, &M);
|
||||||
|
int* tree = (int*)malloc(sizeof(int)*N);
|
||||||
|
int maxHeight = 0;
|
||||||
|
for(int i=0; i<N; i++){
|
||||||
|
scanf("%d",&tree[i]);
|
||||||
|
if(maxHeight<tree[i]) maxHeight = tree[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
int start = 0, end = maxHeight;
|
||||||
|
int optimalHeight = 0;
|
||||||
|
while(start <= end){
|
||||||
|
int midHeight = start + (end - start) / 2; // (start + end) / 2 의 오버플로우 방지 형태
|
||||||
|
long long cutAmount = cutTree(tree,N,midHeight);
|
||||||
|
if(cutAmount<M) end = midHeight - 1;
|
||||||
|
else {
|
||||||
|
optimalHeight = midHeight;
|
||||||
|
start = midHeight + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%d\n",optimalHeight);
|
||||||
|
free(tree);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
long long cutTree(const int* tree, int treeNum, int cuttingHeight) {
|
||||||
|
long long totalCut = 0;
|
||||||
|
for(int i = 0; i < treeNum; i++){
|
||||||
|
if (tree[i] > cuttingHeight) {
|
||||||
|
totalCut += tree[i] - cuttingHeight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return totalCut;
|
||||||
|
}
|
||||||
20
code_study/Baekjoon/java/_11279.java
Normal file
20
code_study/Baekjoon/java/_11279.java
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class _11279{
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Scanner sc = new Scanner(System.in);
|
||||||
|
int N = sc.nextInt();
|
||||||
|
PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Comparator.reverseOrder());
|
||||||
|
for(int i=0; i<N; i++){
|
||||||
|
int input = sc.nextInt();
|
||||||
|
if(input==0){
|
||||||
|
if(maxHeap.isEmpty()) System.out.println(0);
|
||||||
|
else System.out.println(maxHeap.poll());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
maxHeap.offer(input);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sc.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
32
code_study/Baekjoon/python/2630.py
Normal file
32
code_study/Baekjoon/python/2630.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
def DaC(paper) :
|
||||||
|
n = len(paper)
|
||||||
|
firstColor = paper[0][0]
|
||||||
|
isMixed = False
|
||||||
|
for i in range(n):
|
||||||
|
for j in range(n):
|
||||||
|
if paper[i][j] != firstColor :
|
||||||
|
isMixed = True
|
||||||
|
break
|
||||||
|
if isMixed :
|
||||||
|
break
|
||||||
|
|
||||||
|
if not isMixed :
|
||||||
|
if firstColor == 0 :
|
||||||
|
return (1,0)
|
||||||
|
else :
|
||||||
|
return (0,1)
|
||||||
|
|
||||||
|
half = n//2
|
||||||
|
area1 = [row[0:half] for row in paper[0:half]]
|
||||||
|
area2 = [row[half:n] for row in paper[0:half]]
|
||||||
|
area3 = [row[0:half] for row in paper[half:n]]
|
||||||
|
area4 = [row[half:n] for row in paper[half:n]]
|
||||||
|
w1, b1 = DaC(area1)
|
||||||
|
w2, b2 = DaC(area2)
|
||||||
|
w3, b3 = DaC(area3)
|
||||||
|
w4, b4 = DaC(area4)
|
||||||
|
|
||||||
|
return (w1+w2+w3+w4, b1+b2+b3+b4)
|
||||||
|
|
||||||
|
paper = [list(map(int, input().split())) for _ in range(int(input()))]
|
||||||
|
print('\n'.join(map(str,DaC(paper))))
|
||||||
Loading…
x
Reference in New Issue
Block a user