DP로 문제를 풀어보았습니다. 상근이를 기준으로 하였으며 (1 = 승리, 0 = 패배) DP[i -1], DP[i - 3], DP[i - 4]이 1이면 지는 경우고 0이면 이기는 경우라고 판단하였습니다. #include #include using namespace std; int main(int argc, char* argv[]) { int n; int DP[1010]; cin >> n; DP[1] = 1; DP[2] = 0; DP[3] = 1; DP[4] = 1; for (int i = 5; i
DP로 문제를 풀어보았습니다. 상근이를 기준으로 하였으며 (1 = 승리, 0 = 패배) DP[i -1], DP[i - 3]이 1이면 지는 경우고 0이면 이기는 경우라고 판단하였습니다. #include #include using namespace std; int main(int argc, char* argv[]) { int n; int DP[1010]; cin >> n; DP[1] = 0; DP[2] = 1; DP[3] = 0; for (int i = 4; i
DP로 문제를 풀어보았습니다. 상근이를 기준으로 하였으며 (1 = 승리, 0 = 패배) DP[i -1], DP[i - 3]이 1이면 지는 경우고 0이면 이기는 경우라고 판단하였습니다. #include #include using namespace std; int main(int argc, char* argv[]) { int n; int DP[1010]; cin >> n; DP[0] = 0; DP[1] = 1; DP[2] = 0; DP[3] = 1; for (int i = 4; i
총 999번의 가위바위보를 진행해서 많이 맞추면 더 높은 점수를 받을 수 있습니다. 값을 랜덤으로 출력하면 만점을 받을 수도 있습니다. 확률은 1/(3^999) 입니다. 코드는 묵을 내는 경우입니다. #include using namespace std; int main(int argc, char* argv[]) { cout
N개의 바구니에 공을 넣을 때 최종적으로 바구니에 담긴 공의 숫자를 출력하는 문제입니다. #include #include #include using namespace std; int main(int argc, char* argv[]) { int n, m; int a, b, c; int count; int map[110]; memset(map, 0, sizeof(map)); cin >> n >> m; while (m--) { cin >> a >> b >> c; for (int i = a; i
하노이 탑 문제입니다. 첫번째줄에 이동횟수를 두번째 줄 부터는 이동 과정을 출력합니다. 탑의 크기가 100보다 작거나 같으므로, long long보다 큰 수가 나오게 됩니다. 그래서 string으로 문자를 받아서 한자리씩 더하게 하였습니다. 2^n - 1을 하면 이동횟수를 구할수있습니다. 하노이탑은 재귀함수를 통해서 구현하였습니다. #include #include using namespace std; string add(string num1, string num2) { long long sum = 0; string result; while (!num1.empty() || !num2.empty() || sum) { if (!num1.empty()) { sum += num1.back() - '0'; num1..
왼쪽이 크면 Yes를 아니면 No를 출력합니다. 0 0 이 나오면 종료합니다. #include using namespace std; int main(int argc, char* argv[]) { int x, y; while (1) { cin >> x >> y; if (x == 0 && y == 0) { break; } if (x > y) { cout
예제 출력 1에 있는 모양을 출력하는 문제입니다. #include using namespace std; int main(int argc, char* argv[]) { cout