유효한 이메일

면접 대비

시간 제한2초메모리 제한512 MB

요약
각 이메일을 규칙에 따라 정규화한 뒤, 유효하고 서로 다른 주소의 개수를 센다.
난이도

보통10점 중 4점

유형
문자열, 해시맵, 구현, 시뮬레이션
정답자
아직 제출이 없습니다

문제

올해 인터넷 대회에는 여러 이메일 주소로 많은 사람이 등록했다. 유효하면서 서로 다른 이메일 주소가 몇 개나 등록되었는지 알아보려 한다.

유효한 이메일 주소는 사용자 이름과 도메인 이름이 문자 ‘@’로 구분된 형태이다. 사용자 이름은 문자(a-z, A-Z), 숫자(0-9), 밑줄(_), 마침표(.)로 이루어진 문자열이다. 사용자 이름은 마침표로 시작하거나 끝날 수 없고, 마침표가 연속으로 두 번 나올 수 없다. 이 규칙 외에 마침표는 이메일 주소에서 아무 의미가 없다(마침표를 지워도 주소가 달라지지 않는다). 사용자 이름의 대문자와 소문자는 같은 것으로 본다. 즉 사용자 이름 AliBaba와 ali.baba는 같은 것으로 본다. 사용자 이름은 모든 마침표를 지운 뒤 6자 이상 30자 이하여야 한다.

유효한 도메인 이름은 길이가 3 이상 30 이하이고, 마침표(.)로 구분된 도메인 부분들로 이루어진 문자열이다. 도메인 이름은 마침표로 시작하거나 끝나서는 안 된다. 각 도메인 부분은 문자(a-z, A-Z), 숫자(0-9), 붙임표(-)로 이루어진 비어 있지 않은 문자열이다. 도메인 이름의 대문자와 소문자도 같은 것으로 본다. 즉 Foo.bar는 foo.Bar와 같지만, Foo-Bar나 Foobar와는 다르다.

입력

입력의 첫째 줄에는 등록된 이메일 주소의 개수인 양의 정수 n (1 ⩽ n ⩽ 1000)이 주어진다. 다음 n개 줄에는 각각 길이가 100 이하이고 영문자, 숫자, ‘@’, ‘.’, ‘_’, ‘-’로 이루어진 이메일 주소가 하나씩 주어진다.

출력

유효하면서 서로 다른 이메일 주소의 개수를 정수 하나로 출력한다.

예제1

  1. 예제 1

    입력
    5
    acmacm@icpc.ir
    acmacm..a@icpc.ir
    .a1a1.abc@icpc.ir
    acma.c.m@icpc.ir
    acmacm@icpc.com
    
    예상 출력
    2