목록2024/03 (34)
득이공간
1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); string Origin; cin >> Origin; stack Operator; for (int i = 0; i = 'A') { cout
1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net #include #include #include using namespace std; int N; list Neighbor[100000]; bool Visited[100000]; int Max; int A, B; void DFS(bool bFindA, int Idx, int Length) { Visited[Idx] = true; int Cnt = 0; for (const pair& N : Neighbor[Idx]) { if (!Visited[N...
16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net #include #include #include using namespace std; typedef pair p; typedef pair pp; const int DX[4] = { -1, 0, 1, 0 }; const int DY[4] = { 0, -1, 0, 1 }; int N; int Bowl[20][20]; bool Visited[20][20]; int Time, Ate; int Size = 2; int Row, Col; bool Target(int ..
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..