[C++] 백준 25192. 인사성 밝은 곰곰이

멋진감자·2024년 12월 13일
1

알고리즘

목록 보기
42/65
post-thumbnail

문제

시간 초과

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

int main() {
	string str;
	int n;
	
	cin >> n;
	unordered_map<string, int> m(n);

	int cnt = 0;
	for (int i = 0; i < n; i++) {
		cin >> str;
		if (str == "ENTER") {
			m.clear();
		}
		else {
			m[str]++;
			if (m[str] == 1) cnt++;
		}
	}
	cout << cnt;

	return 0;
}

풀이

자료구조 공부한 지 얼마나 됐다고 고새 홀라당 다 까먹어서
생각해내지 못한 풀이..
set은 중복을 허용하지 않으니
enter 이후 들어온 사람을 냅다 받아 크기를 더해주면 된다.

enter가 입력될 때마다 이전에 저장되어 있던 s의 크기와
입력이 끝난 뒤 저장되어 있던 s의 크기의 합까지 잊지말고 더해주자.

코드

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

int main() {
    int n;
    cin >> n;

    set<string> s;
    int cnt = 0;

    for (int i = 0; i < n; i++) {
        string str;
        cin >> str;

        if (str == "ENTER") {
            cnt += s.size();
            s.clear();
        }
        else {
            s.insert(str);
        }
    }
    cnt += s.size();

    cout << cnt;
    return 0;
}

채점

profile
난멋져

0개의 댓글