알고리즘 - 기초 8

게임이론 기초, c++

문제 : https://www.acmicpc.net/problem/9655 9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net N을 번갈아 가며 1을 빼거나 3을 뺄 때, 처음 시작하는 사람이 먼저 0에 도달 하나요? 코드 : if int(input())%2: print("SK") else: print("CY") cs 게임 이론은 규칙을 찾으면 매우 쉽게 풀리는 경향이 있습니다. 풀이 : N = 1이면, 할 수 있는 경우의 수가 1을 빼는 것 밖에 없습니다. 그러면 처음 시작하는 사람이 이기게 됩니다. N이 2이면, 1을 뺄 수 밖에 없습니다. 그리고 N이 1이 되어 1을 뺄 수 밖에 없으니 처음에 시작한 사람은 질 수 밖에 없습니다..

하노이 탑 파이썬 - 재귀 함수를 사용해 보자

전체코드: import sys def hanoi(n,a,b,c): if n==1: move.append([a,c]) else: hanoi(n-1,a,c,b) move.append([a,c]) hanoi(n-1,b,a,c) move = [] hanoi(int(sys.stdin.readline()),1,2,3) print(len(move)) print("\n".join([' '.join(str(i) for i in row) for row in move])) Colored by Color Scripter cs 1. 하노이 탑의 코드를 만들기 위해서 하노이 탑의 규칙을 알아야 합니다 하노이 탑을 해 보면 규칙을 쉽게 찾을 수 있습니다 1. N개의 하노이 탑을 옮길 경우, 가장 왼쪽에 있는 N - 1개의 원반을 ..

linkedList를 이용한 LIS 역 추적, 백준 14003-가장 긴 증가하는 부분 수열 5 [C/C++]

더보기 https://www.acmicpc.net/problem/14003 14003번: 가장 긴 증가하는 부분 수열 5 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000) www.acmicpc.net linkedList를 이용하여 Lis 역추적 문제를 풀어보겠습니다. [본 글은 가장 긴 증가하는 부분 수열: o(n log n)를 알고있다고 가정합니다.] 완성된 코드: #include #include #include #define endl "\n" #define inf -2000000000 using namespace std; struct node { int..

다이나믹 프로그래밍 - 기초

다이나믹 프로그래밍에 대해서 알아봅시다. 기초 단계에서 다이나믹 프로그래밍은 브루트 포스(완전탐색법)으로 구현하였을때 너무 오래걸리는 문제를 풀기위하여 이전에 구한 답을 기억하였다가 활용하는 것을 뜻합니다. (메모이제이션) 일단 문제와 함께 이해해 봅시다. https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 요약을 하자면 N을 나누기 3을 하던 N / 2를 하던 N - 1 해서 1로 만들어야 합니다. 1로 만들 때의 최소 계산 횟수가 몇 번인가를 구해야 합니다. 푸는 방법을 생각해 보면 처음에는 'N을 최대한 작게 만들기 위해서는 N / 3, N / 2, ..