동질적인 나라

면접 대비

시간 제한1초메모리 제한256 MB

요약
최대 10만 줄의 클래스 이름 빈도를 세어 1에서 각 상대빈도 제곱의 합을 뺀 값, 즉 지니 지수를 출력합니다.
난이도

쉬움10점 중 3점

유형
해시맵, 수학
정답자
아직 제출이 없습니다

문제

많은 서양인은 한국을 중국 옆에 포도송이처럼 매달린 동방의 나라 정도로 생각한다. 그러나 한국인은 줄곧 "고래 싸움에 새우 등 터진다"는 처지를 벗어나려 애쓰며 고유한 민족성을 지켜 왔다. 서쪽에는 중국, 동쪽에는 일본, 북쪽에는 "오랑캐" 부족과 팽창하는 러시아가 있었다. 브루스 커밍스는 한국인 대다수가 인종이라는 렌즈로 세상을 보며, 자신들만이 진짜 한국인이라는 본질적 무언가를 지녔다고 여기고 5000년 전으로 거슬러 올라가는 단일한 혈통을 상정한다고 주장했다. 단군 신화로 불리는 이 이야기를 두고 "한국인은 이렇다, 한국인은 저렇다"고 단축해 말하기도 한다. 동족상잔의 전쟁을 거쳐 남과 북으로 갈라지면서 비무장지대가 생겼다. 한국은 주변에 우방이 하나도 없어 사실상 섬이 되었다. 냉전 시기에는 공산권 국가가 적국인 북한을 지원했고, 일본은 식민 통치의 역사 탓에 마지막 후보였다. 민족적 다양성(159개국 중 158위, 북한은 159위)과 문화적 다양성(152위)이 극도로 낮은 것은 점령과 전쟁을 겪은 경험을 고려하면 이해할 수 있다.

한국의 동질성은 경제 발전의 기적에서 중요한 역할을 했지만, 동시에 커져 가는 걱정거리이기도 하다. 사회 안에서 서로 다른 관점을 이해하고, 다른 집단에 대한 부정적 고정관념과 개인적 편견을 없애려면 어느 정도의 다양성이 필요하다. 다른 사람에 대해 배우면 소수자를 인식하고 존중하게 되는데, 어떤 범주에서는 우리 모두가 소수자다. 더 나은 이해는 직장에서 협업과 협력을 쉽게 만든다.

다른 다양성이 없으니 남은 것은 성별이라는 하나의 피할 수 없는 다양성뿐이었고, 이는 한국에서 최근 두 전통적 성별 사이의 격렬한 갈등을 불러왔다. 남성만이 2년간의 혹독한 징병과 그 후유증을 감당하고, 여성은 깊이 배어든 유교, 37%의 임금 격차, 여성 정치인의 부족과 씨름한다. 최근의 또 다른 사례인 예멘 난민은 더 깊은 결을 드러낸다. 전 세계적으로 망명 신청자에 대한 불만이 만연한 가운데, 한 여론조사는 한국 일반 인구의 49%에서 56%가 예멘 난민의 망명 허가에 반대한다고 추정한다. 그런데 놀라운 결과로, 20대와 30대 한국 청년의 반대 비율은 각각 70%와 60%로 훨씬 높다. 이는 국내 합법 체류 외국인이 늘어난 상황임에도 그렇다. 남성과 여성의 불화는 청년층이 결혼을 피하게 만들었고, 2018년 합계 출산율을 0.96이라는 충격적인 수치로 끌어내렸다. 이제 한국인에게 외부인을 받아들이는 일은 도덕이나 경제 성장의 문제만이 아니라 미래의 생존 문제이기도 하다.

제이슨은 이 문제에 관한 글을 쓰면서 주변 집단의 이질성을 예로 들고 싶어 한다. 여러분은 집단의 이질성을 계산하는 프로그램을 만들면 된다. 그는 지니 계수를 쓰기로 했다. 지니 계수는 1−∑j=1npj21 - \sum_{j=1}^{n} p_j^2로 정의되고, 여기서 pjp_j는 클래스 jj의 상대도수다. 그를 도와주자.

입력

개체의 클래스 CiC_i가 한 줄에 하나씩 주어진다. 모든 ii에 대해 CiC_i는 알파벳으로만 이루어지고 대소문자를 구분하며, 길이는 10 이하다.

개체의 수 mm은 100,000 이하다.

출력

주어진 집단의 지니 계수를 출력한다. 상대 오차 또는 절대 오차가 10−610^{-6} 미만이어야 한다.

힌트

첫 번째 경우, Korean의 상대도수는 9/10=0.99/10=0.9이고 Chinese의 상대도수는 1/10=0.11/10=0.1이다. 따라서 지니 계수는 1−(0.92+0.12)=0.181 - (0.9^2 + 0.1^2) = 0.18이다.

두 번째 경우, 1−4×(1/4)2=0.751 - 4 \times (1 / 4)^2 = 0.75이다.

예제2

  1. 예제 1

    입력
    Korean
    Korean
    Korean
    Korean
    Korean
    Chinese
    Korean
    Korean
    Korean
    Korean
    
    예상 출력
    0.18
    
  2. 예제 2

    입력
    German
    French
    British
    Dutch
    
    예상 출력
    0.75