페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#3142

ID검사 5s 512MB

문제

정올이는 정보올림피아드를 준비하는 동아리의 운영자이다.

동아리 회원들의 학습에 도움이 되고자 학습사이트를 준비하고 있다.

 

회원가입과 로그인등 회원 관리를 위하여 회원들이 ID를 입력한 경우

이를 확인하는 프로그램을 만드는 중이다.

 

ID는 ​알파벳 소문자(a ~ z)와 숫자(0 ~ 9)를 포함하며 길이는 5 ~ 12자이다.

 

정올이는 다음과 같은 함수를 만들 생각이다.

하지만 여러 가지로 너무 바빠 여러분에게 구현을 부탁하고 있다.

정올이를 도와 프로그램을 완성해보자.

 

* 명령 1 : int validate(char* ID)  

  : ID가 이미 가입되어 있다면 1을, 그렇지 않다면 0을 반환한다.

 

*​ ​명령 2 : ​ int activate(char* ID)

  : ID가 로그인 중이라면 1을, 그렇지 않다면 0을 반환한다.

 

* ​​명령 3​ : ​int signup(char*ID)

 : 새로운 ID이라면 등록하고 현재 등록 중인 회원 수를 반환한다.

   등록만 되고 자동으로 로그인되지 않는다는 것에 유의하자.​

   이미 등록된 ID​라면 현재 등록 중인 회원 수만 반환한다.​

 

* ​​명령 4​ : ​int close(char*ID) 

  : ID가 등록된 회원이라면 탈퇴 처리한다.

    등록된 회원이 로그인 되어 있다면 탈퇴와 동시에 로그아웃도 처리되어야 한다.

    등록된 회원이 아니라면 아무 일도 하지 않는다.

    현재 등록 중인 회원 수를 반환한다.

 

* ​​명령 5 : ​ int login(char*ID) 

  : ID가 등록된 회원이고 로그아웃된 상태라면 로그인 처리한다. 

    그렇지 않다면 아무 일도 하지 않는다.​

    현재 로그인 중인 회원 수를 반환한다.​​

 

* ​​명령 6 ​: ​int logout(char*ID)

  : ID가 로그인 된 회원이라면 로그아웃 처리한다. 

   그렇지 않다면 아무 일도 하지 않는다.

   현재 로그인 중인 회원 수를 반환한다.

 


입력

첫 행에 명령 수 N이 입력된다. ( 100 ≤ N ≤ 500,000)

다음 행부터 N행에 걸쳐 cmd ID 형식의 데이터가 입력된다.

(1 ≤ cmd ≤ 6) ( ID : 알파벳 소문자(a ~ z)와 숫자(0 ~ 9)를 포함하며 길이는 5 ~ 12)


출력

각 명령에 대한 결과를 행으로 구분하여 출력한다.

예제

10

1 ronaldo
2 ronaldo
3 ronaldo
3 novak
3 geeks
1 novak
5 novak
5 geeks
6 novak
4 ronaldo
0

0
1
2
3
1
1
2
1
2


출처

comkiwer

로그인해야 코드를 작성할 수 있어요.