🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

다솜이형... 나의 완패야... 인정할게... (1620 시간초과 관련)

22.07.23 02:01 작성 조회수 92

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;

    }

}

 

답변 1

답변을 작성해보세요.

1

음 endl 을 "\n"으로 바꿔보시겠어요?

go122345님의 프로필

go122345

질문자

2022.07.24

거짓말같이 맞았다고 나오네요. 감사합니다 :)

채널톡 아이콘