인프런 커뮤니티 질문&답변

kokoxg2님의 프로필 이미지
kokoxg2

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-I

시간초과

작성

·

273

1

안녕하세요, 1620 나는야 포켓몬 마스터 이다솜 문제관련 질문드립니다.
 
강사님 코드와 거의 비슷하고 atoi 부분만 제가 함수로 작성해서 제출을 했지만 계속 시간초과가 떠서 강사님 코드로 수정해서 돌렸는데도 시간 초과가 뜹니다.. 혹시 아래 코드에서 어디서 문제일까요?
 
 
#include<bits/stdc++.h>
using namespace std;

int n, m;

map<string, int> _map1;
map<int, string> _map2;

int toInt(string s) {
	int ret = 0;
	
	for(auto e : s) {
		ret = ret * 10 + (e - '0');
	}
	return ret;
}

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

	string s;

	cin >> n >> m;
	
	for(int i = 1; i <= n; ++i) {
		cin >> s;
		_map1[s] = i;
		_map2[i] = s;
	}
	
	for(int i = 0; i < m; ++i) {
		cin >> s;
		if('0' <= s[0] && s[0] <= '9') {
			cout << _map2[toInt(s)] << endl;
		} else {
			cout << _map1[s] << endl;
		}
	}

	return 0;
}

답변 1

3

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요. kokoxg2님ㅎㅎ 

먼저 코드를 다 확인했는데요. 다른 부분은 다 잘 짜셨고 

아마 endl이 "\n" 등 개행문자보다 시간이 많이 걸리는 함수라서 그런 것같습니다. endl은 결과값에 관한 버퍼를 매번 플러시를 하는 함수라서요.

endl을 "\n"으로 바꿔서 해보시고

그렇게 해도 안 되면 제 코드 그대로 하시고 다른 문제 푸시는 것을 추천드립니다. 

이다솜문제가 시간초과에 굉장히 예민하게 되어있어서 맞더라도 시간초과가 뜨는 그런경우가 좀 발생되기도 합니다.

 

또 질문사항있으시면 언제든 말씀 부탁드립니다. 

감사합니다. 

강사 큰돌 올림. 

kokoxg2님의 프로필 이미지
kokoxg2

작성한 질문수

질문하기