트랙
/
C#
C#
/
연습 문제
/
전화번호 분석
전화번호 분석

전화번호 분석

학습 연습 문제

소개

튜플

C#에서 튜플은 데이터를 정리하는 자료 구조로, 어떤 타입의 필드든 두 개 이상 담을 수 있어요.

튜플은 보통 쉼표로 구분된 두 개 이상의 식을 괄호 안에 넣어 만들어요.

string boast = "All you need to know";
bool success = !string.IsNullOrWhiteSpace(boast);
(bool, int, string) triple = (success, 42, boast);

튜플은 할당 및 초기화 연산, 반환값, 메서드 인자로 사용할 수 있어요.

필드는 점 표기법을 사용해 추출해요. 기본적으로 첫 번째 필드는 Item1, 두 번째 필드는 Item2 등이에요. 기본값이 아닌 이름은 아래에서 설명해요.

// initialization
(int, int, int) vertices = (90, 45, 45);

// assignment
vertices = (60, 60, 60);

//  return value
(bool, int) GetSameOrBigger(int num1, int num2)
{
    return (num1 == num2, num1 > num2 ? num1 : num2);
}

// method argument
int Add((int, int) operands)
{
    return operands.Item1 + operands.Item2;
}

Item1 같은 필드 이름은 코드를 읽기 쉽게 만들어 주지 않아요. 아래 코드는 튜플의 필드에 이름을 붙이는 두 가지 방법을 보여줘요. 또한 아래 코드에서 var를 튜플과 함께 사용할 수 있고 타입이 추론된다는 점도 눈여겨봐요. 이 방법은 이름이 있는 튜플과 이름이 없는 튜플 모두에 똑같이 잘 작동해요.

// name items in declaration
(bool success, string message) results = (true, "well done!");
bool mySuccess = results.success;
string myMessage = results.message;

// name items in creating expression
var results2 = (success: true, message: "well done!");
bool mySuccess2 = results2.success;
string myMessage2 = results2.message;

지침

이 연습 문제에서는 전화번호를 분석해요.

구현해야 할 기능은 두 가지예요.

루틴에 전달되는 전화번호는 NNN-NNN-NNNN 형식(예: 212-515-9876)이고 null이 아니라고 보장돼요.

1. 전화번호 분석하기

분석 결과로 세 가지 데이터를 반환해야 해요.

  1. 번호의 앞 3자리가 뉴욕 지역 코드, 즉 212인지를 나타내는 값
  2. 5번째부터 7번째 자리(1부터 세요)에 접두사 코드 555가 있어서 가짜 번호인지를 나타내는 값
  3. 번호의 마지막 4자리

전화번호 정보를 만들려면 (정적) 메서드 PhoneNumber.Analyze()를 구현해요.

PhoneNumber.Analyze("631-555-1234");
// => (false, true, "1234")

2. 전화번호에 가짜 접두사 코드(555)가 있는지 확인하기

1번 문제에서 만든 전화번호 정보를 사용해 전화번호가 가짜인지 확인하려면 (정적) 메서드 PhoneNumber.IsFake()를 구현해요.

PhoneNumber.IsFake(PhoneNumbers.Analyze("631-555-1234"));
// => true
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
C# Exercism

전화번호 분석 문제를 시작해 볼 준비가 됐나요?

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