본문 바로가기
반응형

Problem Solving/BOJ228

백준 14789번 Oversized Pancake Flipper - C++(cpp) 풀이 1. 한 자리에서 두 번 이상 뒤집을 필요가 없다. 2. 첫 팬케이크를 뒤집을 수 있는 방법은 가장 왼쪽의 K개를 뒤집는 것뿐이다. 3. 왼쪽부터 차례로 happy side가 되도록 뒤집는다. 1. 한 자리에서 두 번 이상 뒤집을 필요가 없다. 한 자리에서 두 번 이상 뒤집을 필요가 없다. 짝수번 뒤집는 것은 안 뒤집는 것과 같고, 홀수번 뒤집는 것은 한 번 뒤집는 것과 같기 때문이다. 따라서 각 자리에서 뒤집을지 말지만 결정하면 된다. 2. 첫 팬케이크를 뒤집을 수 있는 방법은 가장 왼쪽의 K개를 뒤집는 것뿐이다. 뒤집을 수 있는 자리는 총 N-K+1개이다. 이때 첫 번째 팬케이크를 뒤집을 수 있는 자리는 가장 왼쪽의 K개를 뒤집는 자리뿐이다. 3. 왼쪽부터 차례로 happy side가 되도록 뒤집는다.. 2022. 3. 23.
백준 12181번 Googlander - C++(cpp) 풀이 + 그림 설명 1. i행에서 오른쪽으로 꺾으면 더 이상 i행 위는 방문할 수 없다. 2. 따라서 R-i행에서 오른쪽으로 꺾으면 i개 행, C-1개의 열이 있는 격자판에서 출발하는 상황과 같아진다. 3. 시작점에서 쭉 직진하다가 0~(R-1) 행에서 오른쪽으로 꺾는 모든 경우의 수를 더한다. 1. i행에서 오른쪽으로 꺾으면 더 이상 i행 위는 방문할 수 없다. 오른쪽으로만 회전할 수 있기 때문에, 북쪽을 향하고 있는 상황에서 오른쪽으로 꺾으면 해당 지점보다 위에 있는 칸은 더 이상 방문할 수가 없다. 2. 따라서 R-i행에서 오른쪽으로 꺾으면 i개 행, C-1개의 열이 있는 격자판에서 출발하는 상황과 같아진다. 따라서 시작점에서부터 쭉 직진하다가 R-i행에서 오른쪽으로 꺾으면 (i, C-1)인 격자판에서 출발하는 상황과.. 2022. 3. 22.
백준 12177번 Dreary Design - C++(cpp) 풀이 1. G-R과 B-G를 고정한다. 2. R, G, B 값이 모두 0 이상 K이하가 되도록 하는 R 값을 모두 구한다. 3. 가능한 모든 (G-R, B-G) 쌍에 대해 1,2를 반복한다. 1. G-R과 B-G를 고정한다. K 범위가 굉장히 크기 때문에 K 대신 V를 기준으로 생각해준다. 결국 R, G, B 값의 차를 모두 V 이하로 만들어야 한다. G-R 값과 B-G 값을 정하고 나면, R값만 정해도 G, B 값이 저절로 정해진다. 2. R, G, B 값이 모두 0 이상 K이하가 되도록 하는 R 값을 모두 구한다. 1에서 고정한 값을 G-R = i, B-G = j 라고 하자. 이를 가지고 G와 B를 나타내면, G = R+i, B = R+i+j 이다. R, G, B 값이 모두 0 이상 K 이하여야 하므로, .. 2022. 3. 22.
백준 12036번 Dance Around The Clock - C++(cpp) 풀이 1. 어떤 수 N이 짝수라면 양옆은 항상 홀수이고, 어떤 수 N이 홀수라면 양옆은 항상 짝수이다. 2. 어떤 수 N의 오른쪽 수는 항상 N의 왼쪽 수보다 2 작다. 3. K가 짝수인 경우 한 턴이 지나면 왼쪽 번호가 2 커지고, K가 홀수인 경우에는 2 작아진다. 1. 어떤 수 N이 짝수라면 양옆은 항상 홀수이고, 어떤 수 N이 홀수라면 양옆은 항상 짝수이다. 짝수와 홀수를 짝지어 자리를 바꾸기 때문에 턴이 계속되어도 항상 짝수 홀수가 번갈아서 배치되는 규칙이 있다. 2. 어떤 수 N의 오른쪽 수는 항상 N의 왼쪽 수보다 2 작다. 그리고 또 어떤 수의 오른쪽 수 = 왼쪽 수 - 2라는 규칙이 있다. 3. K가 짝수인 경우 한 턴이 지나면 왼쪽 번호가 2 커지고, K가 홀수인 경우에는 2 작아진다. 위에.. 2022. 3. 21.
백준 12969번 ABC - C++(cpp) 풀이 1. 오름차순 쌍이 K개인 문자열 S 앞에 어떠한 문자 X를 붙여 문자열 XS를 만들었을 때, 문자열 XS가 가진 오름차순 쌍의 수는 K + (S에 포함된 X보다 큰 문자의 수)이다. 2. dp(a, b, c, k) = 'A', 'B', 'C'를 각각 a, b, c개 가지고 있으면서 오름차순 쌍이 k개인 문자열의 존재 여부 3. 따라서 'A'로 시작하는 경우, 'B'로 시작하는 경우, 'C'로 시작하는 경우를 모두 고려하면, dp(a, b, c, k) = dp(a-1, b, c, k-b-c) 또는 dp(a, b-1, c, k-c) 또는 dp(a, b, c-1, k) 1. 오름차순 쌍이 K개인 문자열 S 앞에 어떠한 문자 X를 붙여 문자열 XS를 만들었을 때, 문자열 XS가 가진 오름차순 쌍의 수는 K +.. 2022. 3. 20.
반응형