트랙
/
C#
C#
/
연습 문제
/
국제 전화 전문가
국제 전화 전문가

국제 전화 전문가

학습 연습 문제

소개

딕셔너리

딕셔너리는 원소들의 모음이에요. 각 원소는 키와 값으로 이루어져 있고, 딕셔너리의 메서드에 키를 전달하면 그 키에 연결된 값이 반환돼요. 다른 언어에서 맵이나 연관 배열이 하는 역할과 같아요.

딕셔너리는 다음과 같이 만들 수 있어요.

new Dictionary<int, string>();
// Empty dictionary

또는

new Dictionary<int, string>
{
    [1] = "One",
    [2] = "Two"
};

// Or

new Dictionary<int, string>
{
    {1, "One"},
    {2, "Two"}
};
// 1 => "One", 2 => "Two"

키와 값의 타입도 딕셔너리 정의의 일부라는 점에 주의해요.

한 번 만들고 나면, 딕셔너리에 내장된 Add와 Remove 메서드를 사용해 항목을 추가하거나 제거할 수 있어요.

딕셔너리에서 값을 가져오거나 바꿀 때는 키를 사용해 딕셔너리를 인덱싱해요.

var numbers = new Dictionary<int, string>
{
   {1, "One"},
   {2, "Two"}
};

// Set the value of the element with key 2 to "Deux"
numbers[2] = "Deux";

// Get the value of the element with key 2
numbers[2];
// => "Deux"

딕셔너리에 값이 존재하는지 확인하려면 다음과 같이 해요.

var dict = new Dictionary<string, string>{/*...*/};
dict.ContainsKey("some key that exists");
// => true

딕셔너리를 열거하면 키/값 쌍을 열거하게 돼요. 딕셔너리에는 키나 값만 열거할 수 있게 해 주는 속성도 있어요.

지침

이 연습 문제에서는 국제 전화 코드 딕셔너리를 사용해 국제 전화 코드를 관리하는 코드를 작성해요.

딕셔너리는 키에 정수(전화 코드)를, 값에 문자열(국가 이름)을 사용해요.

DialingCodes 정적 클래스와 관련된 9개의 작업이 있어요.

1. 새 딕셔너리 만들기

빈 딕셔너리를 반환하는 DialingCodes.GetEmptyDictionary() (정적) 메서드를 구현해요.

DialingCodes.GetEmptyDictionary();
// => empty dictionary

2. 미리 채워진 딕셔너리 만들기

코드가 1인 "United States of America", 코드가 55인 "Brazil", 코드가 91인 "India", 이렇게 세 개의 전화 코드를 담고 있는 미리 채워진 딕셔너리가 있어요. 미리 채워진 딕셔너리를 반환하는 DialingCodes.GetExistingDictionary() (정적) 메서드를 구현해요.

DialingCodes.GetExistingDictionary();
// => 1 => "United States of America", 55 => "Brazil", 91 => "India"

3. 빈 딕셔너리에 국가 추가하기

딕셔너리를 만들고 전화 코드와 그에 해당하는 국가 이름을 추가하는 DialingCodes.AddCountryToEmptyDictionary() (정적) 메서드를 구현해요.

DialingCodes.AddCountryToEmptyDictionary(44, "United Kingdom");
// => 44 => "United Kingdom"

4. 기존 딕셔너리에 국가 추가하기

비어 있지 않은 딕셔너리에 전화 코드와 그에 해당하는 국가 이름을 추가하는 DialingCodes.AddCountryToExistingDictionary() (정적) 메서드를 구현해요.

DialingCodes.AddCountryToExistingDictionary(DialingCodes.GetExistingDictionary(),
  44, "United Kingdom");
// => 1 => "United States of America", 44 => "United Kingdom", 55 => "Brazil", 91 => "India"

5. 전화 코드에 해당하는 국가 이름 가져오기

전화 코드를 받아 그에 해당하는 국가 이름을 반환하는 DialingCodes.GetCountryNameFromDictionary() (정적) 메서드를 구현해요. 전화 코드가 딕셔너리에 없으면 빈 문자열이 반환돼요.

DialingCodes.GetCountryNameFromDictionary(
  DialingCodes.GetExistingDictionary(), 55);
// => "Brazil"

DialingCodes.GetCountryNameFromDictionary(
  DialingCodes.GetExistingDictionary(), 999);
// => string.Empty

6. 딕셔너리에 국가가 존재하는지 확인하기

전화 코드가 딕셔너리에 존재하는지 확인하는 DialingCodes.CheckCodeExists() (정적) 메서드를 구현해요.

DialingCodes.CheckCodeExists(DialingCodes.GetExistingDictionary(), 55);
// => true

7. 국가 이름 업데이트하기

전화 코드를 받아 딕셔너리에서 그에 해당하는 국가 이름을 매개변수로 전달된 국가 이름으로 바꾸는 DialingCodes.UpdateDictionary() (정적) 메서드를 구현해요. 전화 코드가 딕셔너리에 없으면 딕셔너리는 바뀌지 않아요.

DialingCodes.UpdateDictionary(
  DialingCodes.GetExistingDictionary(), 1, "Les États-Unis");
// => 1 => "Les États-Unis", 55 => "Brazil", 91 => "India"

DialingCodes.UpdateDictionary(
  DialingCodes.GetExistingDictionary(), 999, "Newlands");
// 1 => "United States of America", 55 => "Brazil", 91 => "India"

8. 딕셔너리에서 국가 제거하기

전화 코드를 받아 딕셔너리에서 해당 레코드(전화 코드 + 국가 이름)를 제거하는 DialingCodes.RemoveCountryFromDictionary() (정적) 메서드를 구현해요.

DialingCodes.RemoveCountryFromDictionary(
  DialingCodes.GetExistingDictionary(), 91);
// => 1 => "United States of America", 55 => "Brazil"

9. 이름이 가장 긴 국가 찾기

딕셔너리에 저장된 이름이 가장 긴 국가의 이름을 반환하는 DialingCodes.FindLongestCountryName() (정적) 메서드를 구현해요.

DialingCodes.FindLongestCountryName(
  DialingCodes.GetExistingDictionary());
// => "United States of America"
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
C# Exercism

국제 전화 전문가 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 C# 트랙을 개념 62개연습 문제 178개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.