[C++] BOJ 25192번: 인사성 밝은 곰곰이

ㅎㅎ·2023년 7월 12일
0

BOJ

목록 보기
24/65

BOJ 25192번: 인사성 밝은 곰곰이

문제

입력

출력

채팅 기록 중 곰곰티콘이 사용된 횟수를 출력하시오.


문제 풀이

다음 ENTER가 입력되기 전까지의 닉네임 기록에서의 서로 다른 닉네임의 개수를 저장하는 과정을 반복해 최종 답을 구한다.

  • ENTER가 입력될 때마다(새로운 사람이 들어올 때마다) ans에 기존의 s의 크기를 더한 후 s는 초기화한다.

  • 닉네임이 입력될 때는 s에 저장한다. set 컨테이너 특성 상 중복은 저장되지 않고, s에는 채팅을 한 번이라도 친 사람의 수가 저장된다. (채팅을 친 모든 사람은 곰곰티콘을 사용함)

  • (주의) for문 이후에 s.size()를 한 번 더 ans에 더해주어야한다.

#include <iostream>
#include <string>
#include <set>
using namespace std;

set<string> s;

int main() {
    cin.tie(NULL); cout.tie(NULL);
    ios_base::sync_with_stdio(false);
    
    int n, i, ans = 0;
    string str;
    cin >> n;

    for (i = 0; i < n; i++) {
        cin >> str;
        if (str == "ENTER") {
            ans += s.size(); // 저장된 닉네임 개수 더하기
            s.clear(); // 초기화하기
        }
        else {
            s.insert(str); // 닉네임 저장
        }
    }
    ans += s.size(); // 한 번 더 저장
    cout << ans;

    return 0;
}

처음에는 for 반복문을 사용해 중복 닉네임을 검사했더니 시간 초과가 났다. 그래서 중복을 허용하지 않는 set 컨테이너를 사용해서 풀었다.

profile
Backend

0개의 댓글