목록PS/알고리즘 문제풀이 (157)
득이공간
9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 www.acmicpc.net #include #include #include using namespace std; string Command[10000]; bool Visited[10000]; queue SearchQueue; void InitContainers() { for (int i = 0; i < 10000; ++i) { Command[i] = ""; Visited[i] = false; } while (!SearchQueue.empty()) { SearchQueue.po..
7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net #include #include #include using namespace std; unordered_map CheckNum; priority_queue MaxHeap; priority_queue MinHeap; void Input(int Number) { ++CheckNum[Number]; MaxHeap.emplace(Number); MinHeap.emplace(Number); } void DeleteMax() { if (!MaxHeap.empty()) ..
7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net #include #include #include using namespace std; typedef tuple Coord; int Box[100][100][100]; int Day[100][100][100]; int M, N, H; int DX[6] = { -1, 1, 0, 0, 0, 0 }; // Left, Right int DY[6] = { 0, 0, -1, 1, 0, 0 }; // Top, Bottom int DZ[6] = { 0, ..
5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net #include #include #include using namespace std; deque Sequence; void Test() { int N; string P, Input; cin >> P >> N >> Input; int Prev = 1; int Next = Input.find(','); while (Next != string::npos) { string Sub = Input.substr(Prev, Next - Prev); Sequence.push_back(stoi(Sub)); Prev = Next + 1;..
1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼이 www.acmicpc.net #include #include using namespace std; int N, M, C; bool Broken[10]; bool IsPossible(string CurrentChannel, int Size) { for (int i = 0; i < Size; ++i) { int Number = CurrentChannel[i] - '0'; if (Broken[Number]) { return false; } } return true; } int ..
20529번: 가장 가까운 세 사람의 심리적 거리 각 테스트 케이스에 대한 답을 정수 형태로 한 줄에 하나씩 출력한다. www.acmicpc.net #include #include using namespace std; string Students[32]; int GetDistance(string A, string B, string C) { int Distance = 0; for (int i = 0; i > N; if (N..
11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net #include #include using namespace std; template struct compare { constexpr bool operator()(const _Ty& _Left, const _Ty& _Right) { return (abs(_Left) == abs(_Right)) ? _Left > _Right : abs(_Left) > abs(_Right); } }; priority_queue MinHeap; int main()..
6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다. www.acmicpc.net #include using namespace std; int GCD(int A, int B) { if (B == 0) { return A; } return GCD(B, A % B); } int LCM(int A, int B) { return (A * B) / GCD(A, B); } void Test() { int M, N, X, Y; cin >> M >> N >> X >> Y; int MaxYear = LCM(M, N); for (int Year = X; Year
5525번: IOIOI N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 www.acmicpc.net #include #include using namespace std; string S; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, M; cin >> N >> M >> S; int Count = 0; for (int i = 0; i < M; ++i) { int K = 0; if (S[i] == 'O..
1389번: 케빈 베이컨의 6단계 법칙 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻 www.acmicpc.net #include #include #include #include using namespace std; const int Infinite = INT_MAX; int Distance[101][101]; vector OrderedList; bool Compare(const pair& Left, const pair& Right) { return (Left.second == Right.second) ? Left.first ..