문제
singleton 패턴은 클래스가 정확히 하나의 인스턴스만 갖도록 보장하며, 애플리케이션 설정에 자주 사용됩니다.
비어 있는 상태로 시작하는 하나의 공유 설정을 시뮬레이션하세요. 작업을 순서대로 처리하세요:
set <key> <value>: 키에 값을 저장합니다(기존 값이 있으면 교체합니다).get <key>: 키의 현재 값을 읽습니다. 한 번도 설정된 적이 없다면missing을 반환합니다.
모든 호출자가 같은 인스턴스를 사용하므로, 한 작업에서 설정한 값은 이후의 모든 get에서 볼 수 있습니다.
shared_configuration(operations)를 구현하세요.
입력
operations: 위의 두 형식으로 된 문자열들입니다. 키와 값에는 공백이 없습니다.
출력
get 작업의 결과를 순서대로 반환하세요.
제약 조건
1 ≤ 연산 수 ≤ 10,000
키와 값은 1~20자
예시
입력:
operations = ["set theme dark", "get theme", "get language"]
예상 출력:
expected = ["dark", "missing"]
입력:
std::vector<std::string> operations = {"set theme dark", "get theme", "get language"};
예상 출력:
std::vector<std::string> expected = {"dark", "missing"};
입력:
string[] operations = new string[] {"set theme dark", "get theme", "get language"};
예상 출력:
string[] expected = new string[] {"dark", "missing"};
설명
theme는 dark로 설정되었고, language는 설정된 적이 없어서 missing입니다: ["dark", "missing"].
입력:
operations = ["set lang en", "set lang vi", "get lang"]
예상 출력:
expected = ["vi"]
입력:
std::vector<std::string> operations = {"set lang en", "set lang vi", "get lang"};
예상 출력:
std::vector<std::string> expected = {"vi"};
입력:
string[] operations = new string[] {"set lang en", "set lang vi", "get lang"};
예상 출력:
string[] expected = new string[] {"vi"};
설명
두 번째 set은 같은 공유 인스턴스에서 첫 번째 값을 교체합니다: ["vi"].
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
모든 연산이 같은 하나의 객체를 읽고 씁니다.
힌트 2
설정은 키에서 값으로의 딕셔너리면 충분합니다.
힌트 3
한 번도 설정되지 않은 키는 missing을 반환해야 합니다.
예상 복잡도
시간 O(연산 수), 추가 공간 O(키 수)
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.