백준 10978, 기숙사 재배정
개요 문제 링크 골드 2, DP p[i] != i이도록 permutation 구성하기 접근 수능 경우의 수에서도 종종 보이는 문제, 수능에서는 수형도를 그리라고 지시한다. 노가다를 하라는 의미. 하지만 DP를 이용하면 논리적으로 문제를 해결해줄 수 있다. 아래 예시를 보자. // n = 5 ABCDE B???? ABCDE의 첫 자리에는 A가 오면 안되고, BCDE가 올 수 있는데, 첫 자리 수를 제외한 나머지 수의 구성은 (같은,다른)이 (3,1)로 동일하므로 B가 앞자리에 오는 경우 × 4를 해주면 된다. 즉 f(5) = (3,1) × 4 그럼 위 예시의 정답을 구해보자. ABCDE BA??? -> (3,0) = f(3) (2,1) (BC??? BD??? BE???) BCA?? -> f(2) BCD??..
2023. 2. 19.
백준 1663, XYZ 문자열
개요 문제 링크 골드 1, DP 매 단계 X->YZ, Y->Z, Z->X로 변형이 일어날 때 전체 길이 / 문자 개수 / k번째 문자 구하기 접근 규칙성을 찾으면 크게 어렵지 않다. 우선 X,Y,Z의 개수를 생각해보자. X는 Z에서 온다. Y는 X에서 온다. Z는 X,Y에서 온다. 온다는게 뭔 말이냐 하니, 변화의 이전단계를 생각해보자. 변화를 역으로 취해보면 알 수 있다. 따라서 X[i] = Z[i-1], Y[i] = X[i-1], Z[i] = X[i-1]+Y[i-1] 이게 성립한다. 문자열의 길이는 X[i]+Y[i]+Z[i]이니까 따로 생각할 필요는 없다. 어려운 부분은 K번째 문자 구하기이다. 문제를 잘 들여다보면 s[n]+s[n+1] = s[n+3]임을 알 수 있다. 왜냐? X는 세 번의 시행 뒤..
2023. 2. 17.
백준 5549, 행성 탐사
개요 문제 링크 골드 5, 누적합, DP 2차원 구간 내에 존재하는 문자의 개수 구하기 접근 2차원 경로탐색 DP와 매우 유사하다. 누적합이라도 결국 인접한 원소를 이용하는 것은 동일해서 DP로 분류했다. 우선 기본적인 누적합. 만약 1차원 배열에서 i부터 j까지 누적합을 구한다면 어떻게 할까? sum[1,j] - sum[1,i-1]을 해주면 된다. 동일하게 2차원에서 [y1,x1]부터 [y2,x2]까지의 누적합을 구한다면 sum[y2,x2]-sum[y2,x1-1]-sum[y1-1,x2]+sum[y1-1,x1-1]을 해주면 된다. 전체 합-왼쪽까지 합-위까지 합+왼쪽위까지 합을 해주는 것인데, 벤다이어그램을 생각하면 쉽다. 만약 A∪B를 구한다면 A+B-A∩B를 해줘야 한다. 어떤 C가 A,B를 포함한다..
2023. 2. 17.
백준 14238, 출근 기록
개요 문제 링크 골드 3, DP, Greedy 1칸, 2칸, 3칸마다 존재 가능한 A,B,C를 이용한 문자열 구성 접근 분류는 DP인데 Greedy로 풀 수 있을 것 같아서 시도해봤음. 계속 1%컷나서 재귀쓰는 DP로 시도해봄, 또 1%컷 나서 결국 질문게시판을 둘러보다가 메모이제이션하고 백트래킹 이용한 풀이가 내 풀이랑 너무 다른 것을 확인했다. 다른 사람 풀이 읽는 것은 최소한으로 하려 했는데 달라도 너무 달라서 읽고 이해했음. Greedy 풀이는 조건 하나가 빠져있어서 틀린 거였음. Greedy 풀이도 다른 사람 풀이 읽으면서 이해했다. 아직 골3 풀 때가 아닌가... 정해는 메모이제이션 & 백트래킹인 것 같아 DP부터 알아보자. 1) DP 재귀문을 이용해서 풀이를 짜다보면 a,b,c의 개수를 입력..
2023. 2. 12.