반응형

코드포스 4C Registration system 풀이 코드 | C++


문제 해설

문자열들을 순서대로 기록하며 새로운 문자열일 땐 'OK'를, 중복된 문자열일 땐 문자열 끝에 오름차순으로 숫자를 붙여 출력하는 문제입니다.

풀이

문자열을 키로, 입력 횟수를 값으로 가지는 맵을 선언하고 새로 들어오는 문자열이 맵에 없을 경우 'OK'를 출력 후 맵에 값 1로 저장, 맵에 있을 경우 키와 값을 출력하고 중복 횟수를 1회 늘립니다.

코드

#include <iostream>
#include <map>
#include <string>

int main()
{
    std::string a;
    int n;
    std::map<std::string, int> list;
    
    std::cin>>n;
    
    for(int i=0; i<n; i++){
        std::cin>>a;
        if(list.count(a)==0){
            std::cout<<"OK"<<std::endl;
            list[a] = 1;
        }
        else{
            std::cout<<a<<list[a]<<std::endl;
            list[a] += 1;
        }
    }
    
    return 0;
}

문제 출처

https://codeforces.com/contest/4/problem/C

반응형

+ Recent posts