본문 바로가기

(385)
[Python] 13255번 동전 뒤집기 https://www.acmicpc.net/problem/13255 13255번: 동전 뒤집기첫째 줄에 동전의 개수 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 K (1 ≤ K ≤ 50)이 주어진다. 셋째 줄에는 A[i] (1 ≤ A[i] ≤ N)가 주어진다.www.acmicpc.net 23/08/23 최근 확률 DP 문제를 계속 공부하고 있다. 이 문제 또한 확률 DP 문제로 쉽게 해결할 수 있다. 또한, 약간의 최적화를 거치면 매우 빠르게 문제를 해결할 수 있다. 첫번째 접근 방식: 첫 번째로 접근한 방식은 나이브한 $3$차원 확률 DP이다. DP테이블은 다음과 같이 정의했다. $$DP[i][j][k] = i번째 \ 뒤집는 \ 행위를 \ 수행했을 \ 때 \ j번째 \ 동전이 \ k번..
[Python] 12046번 Not So Random (Small) / 12047번 Not So Random (Large) https://www.acmicpc.net/problem/12046 12046번: Not So Random (Small) The first line of the input gives the number of test cases, T. T test cases follow; each consists of one line with six integers N, X, K, A, B, and C. Respectively, these denote the number of machines, the initial input, the fixed number with which www.acmicpc.net https://www.acmicpc.net/problem/12047 12047번: Not So Random (Large..
[구름톤 챌린지] 2주차 7일차 구름 찾기 깃발 문제 구름 찾기 게임은 한 변의 길이가 $N$인 격자 모양의 게임판 $M$에서 진행하는 게임이다. 게임판의 일부 칸에는 구름이 숨겨져 있고, 게임판에 숨겨진 모든 구름의 위치를 찾으면 게임에서 승리할 수 있다. 구름 찾기 게임의 제작자인 플레이어는 조금 더 쉽게 구름을 찾을 수 있도록 도와주는 깃발을 게임판 위에 설치하려고 한다. 깃발은 구름이 없는 칸이면서, 상하좌우와 대각선으로 인접한 여덟 칸 중 구름이 하나 이상 있는 칸에만 설치할 수 있다. 이렇게 설치한 깃발에는 인접한 여덟 칸 중 구름이 있는 칸의 개수에 해당하는 값이 적힌다. 플레이어는 깃발을 세울 수 있는 모든 칸에 깃발을 세워두었다. 문득, 플레이어는 깃발 중 값이 $K$인 깃발이 몇 개나 있는지가 궁금해졌다. 여러분이 플레이어를 대신해 ..
[Python] 7670번 Game Dice https://www.acmicpc.net/problem/7670 7670번: Game Dice In the game of Dungeons & Dragons, players often roll multi-sided dice to generate random numbers which determine the outcome of actions in the game. These dice come in various flavors and shapes, ranging from a 4-sided tetrahedron to a 20-sided isocahedro www.acmicpc.net 23/08/21 최근 확률 DP문제를 계속 공부하고 있다. 복습하고자 글로 남긴다. 문제 접근 방식: DP로 접근했으며, DP테..
[Python] 1344번 축구 https://www.acmicpc.net/problem/1344 1344번: 축구 홍준이는 축구 경기를 보고 있다. 그러다가 홍준이는 역시 두 팀 중 적어도 한 팀이 골을 소수로 득점할 확률이 궁금해 졌다. 축구 경기는 90분동안 이루어지고, 분석을 쉽게하기 위해서 경기를 5 www.acmicpc.net 23/08/21 또 다른 확률 DP문제이다. 복습해 보고자 글을 작성한다. 첫 번째 접근 방식: 첫 번째 접근 방식은 확률 DP이다. 나는 다음과 같이 DP테이블을 정의하였다. $$DP[i][j][k] = i번째 \ 구간에서 \ j번째 \ 팀이 \ k점이 \ 될 \ 확률$$ 팀은 $2$팀 밖에 없고, 각 팀이 점수를 얻는 데에는 서로가 서로에게 간섭하지 않으므로, 우리는 한 팀에 대해서만 생각해도 충분..
[구름톤 챌린지] 2주차 6일차 문자열 나누기 문제 길이가 $N$인 문자열 $S$가 주어진다. 플레이어는 문자열 $S$를 서로 겹치지 않는 $3$개의 부분문자열로 나누려고 한다. 부분문자열은 모두 길이가 $1$ 이상이어야 하며, 원래 문자열에서 연속해야 한다. 문자열을 나누는 방법에 따라 플레이어는 점수를 얻을 수 있다. 점수는 다음 과정에 따라 계산된다. 문자열 $S$를 위 조건에 따라 나눴을 때, 등장하는 모든 부분문자열을 중복 제거하고 사전순으로 정렬한 결과를 $P$라고 한다. 나누어진 $3$개의 문자열이 각각 $P$에서 $i, j, k$번째로 등장하는 문자열이라면, 얻을 수 있는 점수는 $i+j+k$이다. 예를 들어, abcd 라는 문자열을 $3$개의 부분문자열로 나누는 방법은 {a, b, cd}, {a, bc, d}, {ab, c, d} 의..
[Python] 15488번 나이트가 체스판을 벗어나지 않을 확률 https://www.acmicpc.net/problem/15488 15488번: 나이트가 체스판을 벗어나지 않을 확률 첫째 줄에 N, 나이트의 좌표 x, y, 이동 횟수 K가 주어진다. (1 ≤ N ≤ 50, 1 ≤ x, y ≤ N, 0 ≤ K ≤ 50) www.acmicpc.net 23/08/18 확률DP 문제로, 이 유형을 처음 접해봤기 때문에 복습을 해보고자 글을 작성한다. 첫 번째 접근 방식: 처음 접근 방식은 BFS를 구현하여 직접 나이트를 옮기면서 나올 수 있는 확률들을 모두 곱하는 방식이었다. 이 방식은 다음과 같다. 우리는 나이트가 $K$번 이동한다는 사실을 알고 있고, 나이트가 체스판을 벗어나는 이동을 하는 순간, 그 즉시 더 이상 움직일 수 없다는 것 또한 알고 있다. 기본적인 방법은..
[구름톤 챌린지] 1주차 5일차 이진수 정렬 문제 $N$개의 10진수 정수가 주어진다. 플레이어에게 정수를 그냥 정렬하는 것은 너무 쉽기 때문에, 아래 기준에 따라 정수를 정렬하기로 한다. 10진수 정수를 2진수로 나타냈을 때, 2진수에 포함된 $1$의 개수를 기준으로 내림차순 정렬한다. $1$의 개수가 같다면, 원래 10진수를 기준으로 내림차순 정렬한다. 플레이어가 정수를 잘 정렬했을 때, 앞에서 $K$번째에 위치한 수는 어떤 수가 될 지 구해보자. 입력 첫째 줄에 주어지는 정수의 수 $N$과 플레이어가 찾으려는 정수의 위치 $K$가 공백을 두고 주어진다. 둘째 줄에 정수 $a_1, a_2, \cdots, a_N$이 공백을 두고 주어진다. $1 \leq N \leq 500\ 000$ $1 \leq K \leq N$ $1 \leq a_i \leq ..