아래 소스로 제출했을 때, 2,338ms나 걸렸다. 그러나 다른 사람들 보면 600ms 걸린사람도 있다. 심지어 JAVA인데! 아직 공부가 한참 부족하다.
문제해결한 방법은
string으로 입력을 받아 vector에 하나씩 저장했다.
그리고 vector를 오름차순으로 정렬했다. 두 문자열을 비교하여 맞는 문자열을 찾으면, 그다음부터는 두번째 비교 대상 벡터에서는 앞에있는 문자열은 신경쓰지 않기 위해서이다.
그부분이 iterator를 이용했다. v1에서 비교하기 위한 하나의 string을 v2 가장 첫번째 부터 비교하여 같은 문자열이 있으면 해당 위치를 기록하고 다음에 비교할 때는 이전 문자열을 신경쓰지 않는다.( 5번째에서 발견되었다고 하면 그다음 비교할 때에는 6번째부터 비교하면 된다)
시간을 줄이기 위한 방법을 생각해보면 pair를 이용해서 문자열 길이와 문자열을 같이 저장한 후에, 같은 길이의 문자열에 대해서만 비교해주면 시간이 훨신 줄어들지 않을까라는 생각을 해본다. 나중에 시간나면 추가 구현해보면 좋을 것 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include<cstdio>
#include<vector>
#include<algorithm>
#include<string>
usingnamespacestd;
int main(void)
{
int T;
setbuf(stdout, NULL);
scanf("%d\n", &T);
for (int test_case =1; test_case <= T; test_case++)