본문 바로가기

Algorithm98

BOJ 17281 - ⚾ 야구(순열, 백트래킹, 브루트포스, 구현) https://www.acmicpc.net/problem/17281 17281번: ⚾ ⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종 www.acmicpc.net - permutation STL 혹은 백트래킹으로 순열을 구해서 그 순열에 맞게 야구게임을 구현했을 때 얻을 수 있는 최대점수를 구하면 된다. - 1번 선수를 4번 타자로 미리 결정했다. 부분이 함정지문이였다 #include #include #include using namespace std; int n, ans; int a[50][9]; // 이닝 50 int solve(vector& p) { int.. 2021. 8. 3.
BOJ 2263 - 트리의 순회(tree) https://www.acmicpc.net/problem/2263 2263번: 트리의 순회 첫째 줄에 n(1≤n≤100,000)이 주어진다. 다음 줄에는 인오더를 나타내는 n개의 자연수가 주어지고, 그 다음 줄에는 같은 식으로 포스트오더가 주어진다. www.acmicpc.net - 포스트오더의 맨 마지막 노드가 루트노드이다. 이후 루트노드의 왼쪽, 오른쪽 서브트리를 순회하는 함수를 재귀적으로 짜면 된다. #include #include using namespace std; int in[100001]; int post[100001]; int idx[100001]; // pre 루-왼-오 // in 왼-루-오 // post 왼-오-루 // preorder 출력 void print(int inStart, in.. 2021. 7. 20.
BOJ 1991 - 트리 순회(tree) https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 영문자 www.acmicpc.net - inorder, preorder, postorder 각각 왼루오, 루왼오, 왼오루 로 순회순서를 외운다 - 노드 자료값이 대문자 알파벳이므로 'A'를 빼서 노드벡터의 배열의 인덱스로 치환하면 치환하면 노드를 더 간단하게 구현할 수 있다. #include #include using namespace std; struct Node { char left, right; }; vector tree.. 2021. 7. 19.
boj 21610 - 마법사 상어와 비바라기(구현, 좌표문제) https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net - 구현 중에 구름의 좌표 이동 때문에 골치아파서 오래걸림. 특정 좌표의 행,열 (r,c)를 알고 있을 때 이동한 좌표를 (nr, nc)라고 정의한다. 좌표 범위가 0~n-1이라 정의했을 때 nr = ((r + 방향 * 이동거리) % n + n) % n 으로 정의하였다. - 좌표가 정방향으로 N-1을 넘어갔을 때 %n을 나눠주고, 역방향으로 0을 넘어갔을 때 %n으로 나눠준 뒤 +n을 해서.. 2021. 7. 17.