작성
·
121
0
어디서 시간이 많이 걸리는지...모르겠습니다 ㅜㅜ
아래는 제가 스스로 짠 코드인데 시간초과가 나왔습니다.
초록 글씨 코드는 강사님 코드 딱 한번 보구 제 방식대로 만들자 해서 비슷하게 따라하려 했는데 또 시간초과가 나옵니다 ㅠ
제가 처음 짠 검은 글씨 코드는 입력을 받자마자 출력을 하는게 아니라 입력 다 받구나서 마지막에 몰아서 출력시키는게 원인같은 의심이라도 드는데,
강사님 코드 보구 짠 초록글씨는 왜 시간초과가 나는지 너무 궁금하고 억울(?)합니다.
#include<bits/stdc++.h>
using namespace std;
int N, M; map<int, string> dogam;
int main()
{
ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> N >> M;
string name;
for (int i = 1; i <= N; i++) {
cin >> name;
dogam.insert(make_pair(i, name));
}
string Q;
multimap<int, string> A;
for (int i = 1; i <= M; i++) {
cin >> Q;
if (isdigit(Q[0])) { //숫자가 들어올때 ,
A.insert(make_pair(i, dogam.find(stoi(Q))->second));
}
else {//질문이 문자인경우
for (auto it = dogam.begin(); it != dogam.end(); it++) {
if (it->second == Q)
A.insert(make_pair(i, to_string(it->first)));
}
}
}
for (auto it = A.begin(); it != A.end(); it++) // 출력을 받자마자 하는게 아니라 여기서 몰아서 했습니다..
cout << it->second<< "\n";
}
#include <bits/stdc++.h>
using namespace std;
int N, M; string input;
map<int, string> dogam_byint;
map<string, int> dogam_bystr;
int main()
{
ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> N >> M;
for (int i = 1; i <= N; i++) {
cin >> input;
dogam_byint.insert(make_pair(i, input));
dogam_bystr.insert(make_pair(input, i));
}
for (int i = 1; i <= M; i++) {
cin >> input;
if (isalpha(input[0]))
cout << dogam_bystr.find(input)->second << endl;
else
cout << dogam_byint.find(stoi(input))->second << endl;
}
}
거짓말같이 맞았다고 나오네요. 감사합니다 :)