본문 바로가기

전체 글178

백준 31749 - 조작 step 1더보기$N$이 홀수일 때는 답이 0입니다.$a_1, a_2$를 조작하여 $a_1$을 $0$으로 만듭니다.$a_2, a_3$를 조작하여 $a_2$을 $0$으로 만듭니다.이런 식으로 $a_{n-1}$까지 $0$으로 만듭니다. 그럼 $a_n$에만 값이 들어있을 것입니다. 이제부터 나머지 숫자들을 $a_n$에 맞출 것입니다.$a_{n-2}, a_{n-1}$을 조작하여 두 숫자를 $a_n$로 만듭니다.$a_{n-4}, a_{n-3}$을 조작하여 두 숫자를 $a_n$로 만듭니다.이런 식으로 $a_1, a_2$까지 조작해서 모든 숫자를 $a_n$으로 만듭니다.step 2더보기위의 3번 과정까지 따라 하면 마찬가지로 $a_n$에만 값이 들어 있습니다. 백준 예제입력에 위 과정을 적용하면 0 0 0 0 0 1.. 2024. 4. 27.
백준 31741 - 구간 덮기 step 1 더보기 선분을 1개, 2개, 3개 쓰는 경우에 대해 각각 답을 구하고 그 중 가장 좋은 것을 출력하면 됩니다. 1개를 쓰는 경우 : 전체를 다 덮는 선분이 있어야 합니다. 이 경우 답은 0입니다. 선분들을 (A)시작점을 포함하는 것, (B)시작점과 끝점 사이에 있는 것, (C)끝점을 포함하는 것 3 종류로 나눌 수 있습니다. 지금부터 (C)에서 고른 선분을 $C$, 그 선분의 시작점을 $C_x$, 끝점을 $C_y$ 이런 식으로 쓰겠습니다. 2개 쓰는 경우 : (A)와 (C)의 조합으로 만들 수 있습니다. $C$ 기준으로 $A$를 찾는다고 할 때 (A)에 있는 선분들 중 끝점이 $C_y$보다 큰 선분들 중 끝점이 가장 작은 선분이 최적의 선분입니다. set에 A의 끝 점을 전부 넣어두면 쉽게 .. 2024. 4. 21.
백준 19825 - Minimal Product 문제 번역 주어진 정수 배열 $a_1,\dots,a_n$에서, $i= 0$에 대해서 가장 작은 $a_i$를 구하면 됩니다. step 3 더보기 $a_i = 0$인 경우가 없다고 합시다. 이 경우 ( >=0 인 수들), (=0 인 수들)이 없거나 (=0 인 수들)는 위에서 했던 방식으로 진행할 수 있습니다. (=0 인 수들)과 같은 방식으로 계산할 수 있습니다. 주의할 점 더보기 $a$를 계산해 주는 과정에서 long long도 터집니다. unsigned long long 을 사용하고 계속 $2^{32}$로 나누어 줘야 계산이 잘 됩니다. 코드 더보기 #define _CRT_SECURE_NO_WARNINGS #define ll long long #include #include #inclu.. 2024. 4. 14.
백준 1129 - 키 step 1 더보기 저희의 목표는 인접한 두 사람의 키 차이의 최댓값을 최소로 하려고 하는 것입니다. 우선 사전 순은 무시하고 최선을 다해 배치를 했을 때 키 차이의 최댓값을 구해 봅시다. (가장 작은 사람) (많은 사람들) (가장 큰 사람) (또 많은 사람들) (가장 작은 사람) 을 원형으로 배치를 했다고 생각해 봅시다. 원형이라서 생각하기 어려우니 A: (가장 작은 사람) (많은 사람들) (가장 큰 사람) B: (가장 큰 사람) (또 많은 사람들) (가장 작은 사람) 이렇게 두 줄로 쪼개봅시다. 아래쪽 줄을 뒤집으면 A: (가장 작은 사람) (많은 사람들) (가장 큰 사람) B: (가장 작은 사람) (또 많은 사람들) (가장 큰 사람) 이 됩니다. 1. (많은 사람들)과 (또 많은 사람들)은 오름차순.. 2024. 4. 12.
백준 13573 - 동전 뒤집기 3 step 1 더보기 임의의 행이나 열을 기준으로 뒤집거나, 그대로 두거나 둘 중 하나의 경우만 고려하면 됩니다. 두 번 뒤집는 경우는 신경쓰지 않아도 됩니다. $N$이 20 이하인 것에 집중합니다. 각 행에 대해서 뒤집을지 말지가 정해지면 그때부터는 세로줄만 뒤집으면 됩니다. "각 행에 대해서 뒤집을지 말지"는 2진수로 표현할 수 있습니다. $N$이 5라고 할 때 하나도 뒤집지 않은 것은 $00000_{(2)}$, 첫번째 행만 뒤집는 것은 $00001_{(2)}$로 표현할 수 있습니다. 이 숫자를 행의 상태라고 합시다. 모든 행의 상태에 대해서, 각 열의 앞면 동전의 개수를 알 수 있다면 해당 열을 뒤집을지 말지도 정할 수 있고 최종 답을 구할 수 있습니다. step 2 더보기 SOS DP(https:/.. 2024. 3. 23.
SOS dp sum over subset이라는 이름의 dp입니다. 음이 아닌 정수로 이루어진 길이 $N$의 수열 $A_1$, $A_2$, ... , $A_N$이 주어졌을 때 $0 \le mask < (2^k)$ 인 mask에 대해 $mask | A_i = mask$인 $A_i$의 개수를 구합니다( | 는 bit연산의 or입니다.). 만약 수열 $A$가 0,1,5,6이고 $mask$가 5면 $0|5=5, 1|5=5, 5|5=5, 6|5=7$이므로 답은 3입니다. $mask$가 0일 때 부터 $(2^k) -1$일때 까지의 답을 모두 구하는 문제입니다. $k$는 원하는 값으로 잡으시면 됩니다. $A=(0,1,5,5,6), k=3$이라고 합시다. 숫자끼리 그룹을 지어 줄 것입니다. 먼저, i번째 그룹에는 숫자 i만 들어 있.. 2024. 3. 21.