목록전체 글 (226)
득이공간
11779번: 최소비용 구하기 2 첫째 줄에 도시의 개수 n(1≤n≤1,000)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스 www.acmicpc.net #include #include #include #include using namespace std; typedef pair p; const int Infinite = INT_MAX; int N, M; list Neighbor[1001]; int D[1001]; int P[1001]; deque Way; void Dijkstra(int Start, int End) { for (int i = 1; i D[Idx]) { continue..
2638번: 치즈 첫째 줄에는 모눈종이의 크기를 나타내는 두 개의 정수 N, M (5 ≤ N, M ≤ 100)이 주어진다. 그 다음 N개의 줄에는 모눈종이 위의 격자에 치즈가 있는 부분은 1로 표시되고, 치즈가 없는 부분은 0으로 www.acmicpc.net #include #include #include using namespace std; int N, M; bool Cheeze[100][100]; const int DX[4] = { -1, 0, 1, 0 }; const int DY[4] = { 0, -1, 0, 1 }; queue SQ; bool Visited[100][100]; int Air[100][100]; void BFS() { memset(Visited, false, sizeof(Visite..
17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net #include #include using namespace std; int R, C, T; int Dust[50][50]; int Air2; const int DX[4] = { -1, 0, 1, 0 }; const int DY[4] = { 0, -1, 0, 1 }; void Spread() { queue DQ; for (int i = 0; i 0) { DQ..
14938번: 서강그라운드 예은이는 요즘 가장 인기가 있는 게임 서강그라운드를 즐기고 있다. 서강그라운드는 여러 지역중 하나의 지역에 낙하산을 타고 낙하하여, 그 지역에 떨어져 있는 아이템들을 이용해 서바이벌을 www.acmicpc.net #include #include using namespace std; const int Infinite = INT_MAX; int N, M, R; int Item[101]; int Distance[101][101]; void FloydWarshall() { for (int k = 1; k > M >> R; for (int i = 1; i > Item[i]; } for (int i = 1; i S >> E >> W; Distance[S][E] = W; Distance[E..
14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net #include #include using namespace std; typedef pair position; int N, M; int Map[8][8]; int MaxVirus; position Virus[10]; const int MaxAdd = 3; position AddWall[MaxAdd]; const int DX[4] = { -1, 0, 1, 0 }; const int DY[4] = { 0, -1, 0, 1 }; queue SQ; bool Visited[8][8];..
13172번: Σ 모듈러가 11에서 1,000,000,007이 되어 답이 달라졌지만, 역시 3을 곱한 다음 1,000,000,007으로 나눈 나머지는 7이 된다. www.acmicpc.net #include #include using namespace std; typedef long long ll; const ll Mod = 1000000007; ll Pow(ll X, ll Y) { if (Y == 1) { return X; } if (Y % 2 == 1) { return X * Pow(X, Y - 1) % Mod; } ll Z = Pow(X, Y / 2); return Z * Z % Mod; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); ..
12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net #include #include using namespace std; int Time[100001]; int Count[100001]; bool Visited[100001]; queue SQ; void NeighborCheck(int Neighbor, int Current) { if (Neighbor 100000) { return; } int CurTime = Time[Neighbor]; int..
11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net #include using namespace std; int Sequence[1000]; int LengthL[1000]; int LengthR[1000]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; for (int i = 0; i > Sequence[i]; for (int j = 0; j < i; ++j) { if (Sequence[j..
9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net #include #include using namespace std; string Str; string Bomb; string Current; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin >> Str >> Bomb; int Length = Bomb.size(); for (int i = 0; i < Str.size(); ++i) { Current...
9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net #include using namespace std; int N, Cnt; int Col[14]; bool Check(int Index) { for (int i = 0; i < Index; ++i) { if (Col[i] == Col[Index] || abs(Col[Index] - Col[i]) == Index - i) { return false; } } return true; } void DFS(int Index) { if (Index == N) { ++Cnt; return;..