백준 9322 c++

magicdrill·2024년 8월 14일

백준 문제풀이

목록 보기
417/673

백준 9322 c++

다른 풀이에 비해 시간은 동일하지만 메모리 사용량이 너무 많았다.
모든 입력을 한 번에 다 받아서 정답을 확인하려 한 것과, 키값들과 암호문을 또 새로운 벡터로 받아서 그런거 같다....
쉬운 알고리즘이었는데 너무 복잡하게 생각한거 같다.

#include <iostream>
#include <vector>
#include <algorithm>
#include <map>

using namespace std;

void find_answer(vector<vector<vector<string>>>& plaintext)
{
	int i, j, k;
	vector<string> first_public_key;
	vector<string> second_public_key;
	vector<string> enc_text;

	for (i = 0; i < plaintext.size(); i++)
	{
		first_public_key = plaintext[i][0];
		second_public_key = plaintext[i][1];
		enc_text = plaintext[i][2];

		/*
		for (string temp : first_public_key)
		{
			cout << temp << " ";
		}
		cout << "\n";
		for (string temp : second_public_key)
		{
			cout << temp << " ";
		}
		cout << "\n";
		for (string temp : enc_text)
		{
			cout << temp << " ";
		}
		cout << "\n";
		*/
		
		for (j = 0; j < first_public_key.size(); j++)
		{
			for (k = 0; k < second_public_key.size(); k++)
			{
				if (second_public_key[k] == first_public_key[j])
				{
					cout << enc_text[k] << " ";
					break;
				}
			}
		}
		cout << "\n";
	}
	                                                                                  
	return;
}

void input_data(vector<vector<vector<string>>> &plaintext)
{
	int T, N;
	int i, j, k;
	string temp;

	cin >> T;
	for (i = 0; i < T; i++)
	{
		vector<vector<string>> T1;

		cin >> N;
		for (j = 0; j < 3; j++)
		{
			vector<string> T2;

			for (k = 0; k < N; k++)
			{
				cin >> temp;
				T2.push_back(temp);
			}
			T1.push_back(T2);
		}
		plaintext.push_back(T1);
	}

	/*
	cout << "입력값확인\n";
	for (i = 0; i < plaintext.size(); i++)
	{
		for (j = 0; j < plaintext[i].size(); j++)
		{
			for (k = 0; k < plaintext[i][j].size(); k++)
			{
				cout << plaintext[i][j][k] << " ";
			}
			cout << "\n";
		}
		cout << "\n";
	}
	*/

	return;
}

int main(void)
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	vector<vector<vector<string>>> plaintext;

	input_data(plaintext);
	find_answer(plaintext);

	return 0;
}

0개의 댓글