https://www.acmicpc.net/problem/2204
문제
> 꿍은 도비에게 어떤 단어들을 대소문자 구분없이 사전순으로 가장 앞서는 단어를 맞추면 양말을 주어 자유를 얻게해준다.
> 하지만 인성이 나빠 대소문자를 마구 섞었다. 도비에게 자유를 주자.
접근
입력받은 문자열을 toupper나 tolower로 대문자 혹은 소문자로 정렬한 후 비교하고 사전순으로 빠른, 즉 , 더 작은 문자열을 출력한다.
문제해결
> 문자열을 대문자로 정렬해 비교하는걸 선택했고 이를 매번 입력마다 해줘야해서 함수로 정의 해줬다. 처음으로 들어온 문자열을 따로 입력받아 비교대상으로 삼고 다음 문자열부터 각각 Toupper 함수를 돌려 나온 문자열과 비교해 더 작은값을 결과값 변수에 갱신시켜준다. 반복이 끝나면 출력한다.
코드
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
string Toupper(string s)
{
for (int i = 0; i < s.length(); i++)
{
s[i] = toupper(s[i]);
}
return s;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n;
while (cin >> n && n != 0)
{
string str2;
string result;
cin >> result;
for (int i = 1; i < n; i++)
{
cin >> str2;
result = Toupper(result) < Toupper(str2) ? result : str2;
}
cout << result << '\n';
}
}

후기
toupper나 tolower로 변환해서 단순히 비교해서 해결하도록 5분만에 끝냈는데 출력해보니 변환된 문자열이 나왔다. 그래서 이를 해결하기위해 여러가지 방법을 생각하느라 고생을 헀다.
결국 함수로 정의해 변환값을 리턴해서 원본값은 변환하지않고 연산하도록 헀다. 생각한대로 잘 나왔다.