#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
// Helper function to calculate the length of the common prefix
int commonPrefixLength(const string& s1, const string& s2) {
int length = 0;
while (length < s1.size() && length < s2.size() && s1[length] == s2[length]) {
length++;
}
return length;
}
int main() {
int N;
cin >> N;
vector<pair<string, int>> indexedStrings(N);
vector<string> originalStrings(N);
for (int i = 0; i < N; ++i) {
cin >> originalStrings[i];
indexedStrings[i] = {originalStrings[i], i};
}
sort(indexedStrings.begin(), indexedStrings.end());
int maxLength = 0;
pair<int, int> bestPair = {0, 1};
for (int j = 1; j < N; ++j) {
string& s1 = indexedStrings[j - 1].first;
string& s2 = indexedStrings[j].first;
int index1 = indexedStrings[j - 1].second;
int index2 = indexedStrings[j].second;
int prefixLen = commonPrefixLength(s1, s2);
if (prefixLen > maxLength || (prefixLen == maxLength && min(index1, index2) < min(bestPair.first, bestPair.second))) {
maxLength = prefixLen;
bestPair = {index1, index2};
}
}
int i1 = bestPair.first;
int i2 = bestPair.second;
if (i1 > i2) swap(i1, i2);
cout << originalStrings[i1] << endl;
cout << originalStrings[i2] << endl;
return 0;
}
요즘에 드는 생각이 나는 사실 지금 챌린저 문제를 풀고있지만 실버, 브론즈부터 다시 시작해야할 것 같다는 생각이 들고있다. ㅠ 많은 연습이 필요한데 그러지는 못한 느낌이 든다.
#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL