Algorithm/baekjoon
[BOJ 25192] 인사성 밝은 곰돌이
식빵민
2022. 7. 26. 04:24
문제 분석 및 풀이 방법
- 시간 제한 1초 Big-O 기준 약 1억 연산
- 채팅방의 기록 수 100,000개
- <set>을 사용한다.(O(logn)기대)
- 새로운 사람이 들어오면 곰곰티콘을 사용한다. ⇒ 곰곰티콘을 사용한 사람의 이름을 set에 추가한다.
- 기존의 이름이 또 들어오면 무시한다.
- "Enter"가 들어오면 <set>을 초기화 한다.
set<string> people;
int n, cnt;
string name;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n;
while (n--) {
cin >> name;
if (name == "ENTER") {
people.clear();//"ENTER"가 입력되면 set초기화
} else {
if (people.count(name) == 0) {//set에 없는 이름이면
people.insert(name);//set에 추가
cnt++;//곰곰티콘 사용횟수 추가
} else continue;//일반 채팅
}
}
cout << cnt;
return 0;
}
느낀 점
- 실력이 는 건지 문제가 쉬운건지 모르겠지만 금방 풀었다.
- 시간 제한과 조건을 보고 시간 복잡도를 얼추 계산해 <set>을 사용해야 겠다는 생각을 했는데 잘 생각한거 같다.
시간 복잡도
- while문 n번 반복-> O(n)
- set에서 접근 -> O(logn)
- set에서 삭제 -> O(logn)(기대)
➣O(nlogn)