유언장

유언장

학습 연습 문제

소개

네임스페이스

코드를 잘 정리하는 중요한 방법 중 하나는 네임스페이스를 사용하는 거예요. 두 함수의 이름이 충돌할 수 있는데, 이때 두 함수를 서로 다른 네임스페이스에 넣으면 충돌을 해결할 수 있어요. 네임스페이스는 중첩할 수 있어서, 규모가 큰 코드베이스를 구조화하는 데 도움이 돼요. 네임스페이스에 접근할 때는 범위 지정 연산자 ::를 사용해요.

아래 예제는 서로 다른 두 foo 함수를 사용하는 모습을 보여줘요. 각 함수 앞에 자신이 속한 네임스페이스를 붙이면 두 함수를 함께 사용할 수 있어요.

namespace my_ns {
    int foo() {
        return 44;
    }
    namespace my_inner_ns {
        int baz() {
            return 90;
        }
    }
}
namespace my_other_ns {
    int foo() {
        return -2;
    }
}

int myresult{my_ns::foo() + my_other_ns::foo() * my_ns::my_inner_ns::baz()};

지침

독특한 유언 의뢰를 전문으로 처리하는 명망 있는 법률 사무소에서 일하고 있어요.

이 연습 문제에서는 신비로운 금고를 열게 돼요. 유산 집행인으로서, 세 가문이 오랫동안 지켜온 비밀 코드를 모아 계좌 번호와 그에 맞는 코드를 알아낼 거예요.

어느 한 가문이 혼자 금고를 여는 것을 막기 위해, 금고는 각 가문의 지식과 마지막 유언에서 알게 된 비밀 수정자를 결합해야만 열 수 있어요.

금고를 여는 가문들을 돕는 것과 관련된 세 가지 과제가 있어요.

1. 가문들 앞에 앉아 서류를 펼쳐요

estate_executor라는 이름의 네임스페이스를 정의해요. 다음 과제의 코드는 estate_executor 네임스페이스의 본문 안에 정의해야 해요.

namespace some_name {
    // The space between the curly brackets
    // is called body of the  namespace.
}

2. 비밀 계좌 번호를 찾아요

지금이 바로 중요한 순간이에요. 비밀 계좌 번호를 밝혀낼 수 있는 비밀 수정자 키는 오직 한 사람만이 가지고 있어요.

비밀 수정자를 인자로 받아 완성된 계좌 번호를 int로 반환하는 assemble_account_number(int secret_modifier) 함수를 정의해요.

올바른 번호를 얻으려면 세 가문 각각의 bank_number_part를 모두 더해야 해요.

3. 마지막 단계: 비밀 코드를 입력해요

유언장의 지시 사항에 따르면, 파란색 조각을 모두 더한 다음 빨간색 조각을 모두 더해야 해요. 결과 코드는 두 합을 곱해서 구해요.

세 가문의 조각을 하나의 integer로 결합해 결과 코드를 반환하는 assemble_code() 함수를 정의해요. 이 함수는 인자가 없고, 각 가문의 관련 네임스페이스에 담긴 정보에만 의존해요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
C++ Exercism

유언장 문제를 시작해 볼 준비가 됐나요?

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