본문 바로가기

다이나믹 프로그래밍90

[백준] 9658번: 돌 게임 4 (python) 9658번: 돌 게임 4 문제 ) 돌 게임은 두 명이서 즐기는 재밌는 게임이다. 탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개, 3개 또는 4개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 지게 된다. 두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다. 입력 : 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1000) 출력 : 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. 풀이) 기본적인 풀이는 돌 게임 3와 동일하나 마지막 돌을 가져가면 지게 되므로, 마지막 돌의 앞 돌을 가져가면 이길 수 있다. 따라서 돌 게임 3의 코드에서 n - 1을 출력해주면 된다. 1 2 .. 2022. 4. 4.
[백준] 9657번: 돌 게임 3 (python) 9657번: 돌 게임 3 문제 ) 돌 게임은 두 명이서 즐기는 재밌는 게임이다. 탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개, 3개 또는 4개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다. 두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다. 입력 : 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1000) 출력 : 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. 풀이) dp[1] 부터 dp[5] 까지를 직접 구한 뒤, 점화식을 찾아 그걸 dp화 시켰다. 탑 다운 방식은 어떤 식으로 짜야할지 잘 모르겠다. 1 2 3 4 5 6 7 8 9 10 11 12 1.. 2022. 4. 4.
[백준] 11052번: 카드 구매하기 (python) 11052번: 카드 구매하기 문제 ) 요즘 민규네 동네에서는 스타트링크에서 만든 PS카드를 모으는 것이 유행이다. PS카드는 PS(Problem Solving)분야에서 유명한 사람들의 아이디와 얼굴이 적혀있는 카드이다. 각각의 카드에는 등급을 나타내는 색이 칠해져 있고, 다음과 같이 8가지가 있다. 전설카드 레드카드 오렌지카드 퍼플카드 블루카드 청록카드 그린카드 그레이카드 카드는 카드팩의 형태로만 구매할 수 있고, 카드팩의 종류는 카드 1개가 포함된 카드팩, 카드 2개가 포함된 카드팩, ... 카드 N개가 포함된 카드팩과 같이 총 N가지가 존재한다. 민규는 카드의 개수가 적은 팩이더라도 가격이 비싸면 높은 등급의 카드가 많이 들어있을 것이라는 미신을 믿고 있다. 따라서, 민규는 돈을 최대한 많이 지불해서.. 2022. 3. 30.
[백준] 15489번: 파스칼 삼각형 (python) 15489번: 파스칼 삼각형 문제 ) 파스칼 삼각형은 아래와 같은 모양으로 이루어져 있다. 양 끝을 제외한 각 수는 자신의 바로 왼쪽 위의 수와 바로 오른쪽 위의 수의 합으로 되어있다. 이때 R번째 줄, C번째 수를 위 꼭짓점으로 하는 한 변이 포함하는 수의 개수가 W인 정삼각형과 그 내부를 생각하자. 정삼각형의 변과 그 내부에 있는 수들의 합을 구하고 싶다. 예를 들면, 3번 째 줄, 1번 째 수를 꼭짓점으로 하고 한 변이 포함하는 수의 개수가 4인 정삼각형과 그 내부에 있는 수의 합은 1+(1+3)+(1+4+6)+(1+5+10+10) = 42 이다. 주어진 R, C, W에 대해서 그에 해당하는 합을 구하는 프로그램을 작성하여라. 입력 : 첫째 줄에 양의 정수 R, C, W가 공백을 한 칸씩 두고 차례.. 2022. 2. 23.