브루트포스 2

/<> 백준 18111번 : 마인크래프트 (C언어)

https://www.acmicpc.net/problem/18111  노가다를 통해 최소 시간과 블록의 높이를 구하는 브루트포스 문제입니다.(변수가 은근히 많아 이름을 쓸 때 헷갈렸습니다..;) 별 다른 알고리즘을 쓰지 않아 문제 자체는 풀기 괜찮았습니다.  1. 입력받은 땅의 최고 높이와 최저 높이를 구합니다. 평탄화가 끝난 뒤 땅의 높이는 이 둘 사이의 값입니다. 2. 최대 높이와 최소 높이 사이에서 반복문을 통해 한 높이를 목표로 평탄화를 할 때, 쌓아야 하는 블록 개수와 파내야 하는 블록 개수를 구합니다. 3. 쌓아야 하는 블록 개수가 보다 많으면 해당 높이론 평탄화를 하지 못하므로 생략합니다. 4. 평탄화에 걸린 시간의 최솟값과 해당 높이를 구합니다. 시간이 같을 경우 높이가 더 높은 경우를 출..

백준 2024.08.31

/<> 백준 1057번 : 토너먼트 (C언어)

https://www.acmicpc.net/problem/1057  사실 서로 대결을 안 할 일이 없기 때문에 -1 출력 부분을 따로 작성하진 않았습니다.처음에 홀수가 라운드를 진행할 때 부전승 때문에 복잡하게 생각을 했는데, 그냥 (번호 + 1) / 2 를 하니까 모두 감안하여 계산이 되더군요. 이걸 알고 나니 코드가 훨씬 간결해졌습니다.  1. 라운드 횟수를 추가하며, 총 번호 개수와 둘의 번호를 절반으로 줄입니다. 2. 둘의 번호가 같아지면 같은 라운드를 진행했다는 뜻이므로 종료합니다.  #include int count = 0;void game(int n, int k, int l) { if(k == l) return; count++; game(n/2, (k+1..

백준 2024.08.02