본문 바로가기
Algorithm/BackJoon

25192번: 인사성 밝은 곰곰이

by 꼬부기가우는소리 2023. 9. 11.
728x90

 

- 문제 사이트: https://www.acmicpc.net/problem/25192

 

25192번: 인사성 밝은 곰곰이

첫번째 새로운 사람이 들어온 뒤  pjshwa, chansol, chogahui05은 모두 곰곰티콘으로 인사했다. 두번째 새로운 사람이 들어온 뒤  pjshwa와 chansol은 다시 곰곰티콘으로 인사했다.

www.acmicpc.net

 

채팅을 입력한 아이디 확인 시, "ENTER" 문자열이 입력된 후에 처음 입력된 아이디들을 카운팅 하는 문제이다.

입력했었는지 여부를 확인하기 위해서는 맵을 사용하였다.

 

1) 총 횟수 입력 받음: N

2) 새로운 사람의 입장을 나타내는 "ENTER" 인지 확인

3-1) "ENTER" 인 경우, 현재까지 저장된 아이디 개수 저장하고 아이디 목록 초기화

3-2) "ENTER" 아닌 경우, 카운팅 값 증가시키고 아이디 저장

4) 모든 입력이 완료된 뒤, 현재까지 저장된 아이디 개수 저장

5) 전체 카운팅 값 출력

 

#include <iostream>
#include <map>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int N;
    cin >> N;

    int total = 0;
    string str;
    map<string, bool> names;
    for (int i = 0; i < N; i++)
    {
        cin >> str;
        if (str == "ENTER")
        {
            total += names.size();
            names.clear();
        }
        else
        {
            names[str] = true;
        }
    }
    
    total += names.size();
    cout << total << endl;
    return 0;
}

- 메모리: 8892 KB

- 시간: 100 ms

- 코드 길이: 662 B

 

아이디의 입력 여부만 확인하면 되므로, map 대신 unordered_set을 사용해줄 수도 있다.

 

#include <iostream>
#include <unordered_set>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int N;
    cin >> N;

    int total = 0;
    string str;
    unordered_set<string> names;
    for (int i = 0; i < N; i++)
    {
        cin >> str;
        if (str == "ENTER")
        {
            total += names.size();
            names = unordered_set<string>();
        }
        else
        {
            names.insert(str);
        }
    }
    
    total += names.size();
    cout << total << endl;
    return 0;
}

- 메모리: 8312 KB

- 시간: 32 ms

- 코드 길이: 582 B

728x90

'Algorithm > BackJoon' 카테고리의 다른 글

1550번: 16진수  (0) 2023.09.13
4779번: 칸토어 집합  (0) 2023.09.12
1158번: 요세푸스 문제  (0) 2023.09.10
1920번: 수 찾기  (0) 2023.09.09
10866번: 덱  (0) 2023.09.08

댓글