Priceless

[백준] 2204번: 도비의 난독증 테스트 (C++) 본문

Algorithm & Test/백준

[백준] 2204번: 도비의 난독증 테스트 (C++)

Hyun__ 2023. 9. 2. 23:24

 

문자열의 대문자와 소문자 상관 없이 사전적으로 가장 앞에 있는 단어를 출력하는 문제다

C++이라 문자열을 일일이 비교해야 할 줄 알았지만

부등호 하나로 쉽게 비교할 수 있어서 생각보다 어렵지 않았다

 

입력 값과 현재까지의 가장 앞의 값을 대문자 혹은 소문자로 통일한 후 비교하여

대문자 혹은 소문자로 통일되지 않은 문자를 출력하도록 문제를 풀었다

 

처음에는 아스키 코드로 접근하려다가

임시 변수를 설정하고 대문자나 소문자로 통일하는 것이 훨씬 속 편한 방법이다

 

// baekjoon 2204

#include<iostream>
#include<algorithm>
#include<string>
#include<cmath>


using namespace std;

// codes for fast I/O
void init(){
    cin.tie(0);
    cout.tie(0);
    ios_base::sync_with_stdio(false);
}


int main(){
    init();
    
    int n ;
    string first;
    string first_temp;
    
    while(true){
        
        cin >> n;
        if(n == 0){
            break;
        }
        
        first = "zzzzzzzzzzzzzzzzzzzzzzzzzzzz";
        string input;
        
        for(int i = 0; i < n; i++){
            cin >> input;
            string temp = input;
            first_temp = first;
            
            for(int j = 0; j < input.size(); j++){
                temp[j] = toupper(input[j]);
            }
            
            for(int j = 0; j < first.size(); j++){
                first_temp[j] = toupper(first[j]);
            }
            
            if(first_temp > temp){
                first = input;
            }
            
        }
        cout << first << '\n';
    }
    
    return 0;
}