목록PS (178)
득이공간
2239번: 스도쿠 스도쿠는 매우 간단한 숫자 퍼즐이다. 9×9 크기의 보드가 있을 때, 각 행과 각 열, 그리고 9개의 3×3 크기의 보드에 1부터 9까지의 숫자가 중복 없이 나타나도록 보드를 채우면 된다. 예를 들어 다 www.acmicpc.net #include #include #include using namespace std; const int MaxSize = 9; bool bFound; int Solution[MaxSize][MaxSize]; int Board[MaxSize][MaxSize]; bool CheckRow[MaxSize][MaxSize + 1]; bool CheckCol[MaxSize][MaxSize + 1]; bool CheckArea[MaxSize][MaxSize + 1]; ..
1806번: 부분합 첫째 줄에 N (10 ≤ N > Num; Sum[1] = Num; for (int i = 2; i > Num; Sum[i] = Sum[i - 1] + Num; } } int GetLength(int N, int S) { int Min = 100000; int Left = 1; int Right = 1; while (Le..
1647번: 도시 분할 계획 첫째 줄에 집의 개수 N, 길의 개수 M이 주어진다. N은 2이상 100,000이하인 정수이고, M은 1이상 1,000,000이하인 정수이다. 그 다음 줄부터 M줄에 걸쳐 길의 정보가 A B C 세 개의 정수로 주어지는데 A번 www.acmicpc.net #include #include #include #include using namespace std; vector Edges; int RootNode[100000]; int Find(int Node) { if (Node == RootNode[Node]) { return Node; } return RootNode[Node] = Find(RootNode[Node]); } void Union(int NodeA, int NodeB)..
27172번: 수 나누기 게임 《보드게임컵》을 준비하다 지친 은하는 보드게임컵 참가자들을 경기장에 몰아넣고 결투를 시키는 게임 《수 나누기 게임》을 만들었습니다. 《수 나누기 게임》의 규칙은 다음과 같습니다. www.acmicpc.net #include #include using namespace std; int Players[1000001]; vector Cards; vector Scores; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); for (int i = 1; i > N; Cards.reserve(N); Scores.reserve(N); for (int i = 0; i < N; ++i) { int Card; ci..
2467번: 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 - www.acmicpc.net #include using namespace std; int Solution[100000]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; for (int i = 0; i > Solution[i]; } int ResultSum = 2000000000; int ResultLeft = 0; int ResultRight..
2166번: 다각형의 면적 첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다. www.acmicpc.net #include using namespace std; typedef pair Vec2; Vec2 Vertex[10000]; double GetTriangle(const Vec2& A, const Vec2& B, const Vec2& C) { Vec2 AB = Vec2(B.first - A.first, B.second - A.second); Vec2 AC = Vec2(C.first - A.first, C.second - A.second); return (AB.first * AC.second..
18115번: 카드 놓기 수현이는 카드 기술을 연습하고 있다. 수현이의 손에 들린 카드를 하나씩 내려놓아 바닥에 쌓으려고 한다. 수현이가 쓸 수 있는 기술은 다음 3가지다. 제일 위의 카드 1장을 바닥에 내려놓는다. www.acmicpc.net #include #include using namespace std; deque Skills; deque InitialCards; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; for (int i = 1; i > Skill; Skills.push_back(Skill); } for (int Card = 1; Card
11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net #include using namespace std; int DP[1025][1025]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, M; cin >> N >> M; for (int i = 1; i Number; DP[i][j] = DP[i][j - 1] + DP[i - 1][j] - DP[i - 1][j - 1] + Num..
9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net #include using namespace std; int ST[2][100000]; int DP[2][100000]; void Test() { int N; cin >> N; for (int i = 0; i > ST[i][j]; } } if (N
1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net #include using namespace std; int Triangle[501][501]; int DP[501][501]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; cin >> Triangle[1][1]; DP[1][1] = Triangle[1][1]; int Max = DP[1][1]; for (int i = 2; i Triangle[i][j]; if (j == 1) { DP[i][j] = DP[i - 1][..