쉬움 0명 해결 정답률 0%

하나뿐인 공유 설정

싱글톤 설정 객체를 시뮬레이션합니다: 프로그램의 모든 부분이 같은 인스턴스를 읽고 씁니다.

배우게 될 내용

  • 프로그램 전체에서 객체 하나 공유하기
  • 처음 사용할 때 인스턴스 만들기
  • 설정을 한곳에서 읽고 쓰기

문제

원문 보기 (영어)

singleton 패턴은 클래스가 정확히 하나의 인스턴스만 갖도록 보장하며, 애플리케이션 설정에 자주 사용됩니다.

비어 있는 상태로 시작하는 하나의 공유 설정을 시뮬레이션하세요. 작업을 순서대로 처리하세요:

  • set <key> <value>: 키에 값을 저장합니다(기존 값이 있으면 교체합니다).
  • get <key>: 키의 현재 값을 읽습니다. 한 번도 설정된 적이 없다면 missing을 반환합니다.

모든 호출자가 같은 인스턴스를 사용하므로, 한 작업에서 설정한 값은 이후의 모든 get에서 볼 수 있습니다.

shared_configuration(operations)를 구현하세요.

입력

operations: 위의 두 형식으로 된 문자열들입니다. 키와 값에는 공백이 없습니다.

출력

get 작업의 결과를 순서대로 반환하세요.

제약 조건

1 ≤ 연산 수 ≤ 10,000

키와 값은 1~20자

예시

예시 1
입력:
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"].

예시 2
입력:
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에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.

다른 사람의 풀이 보기

커뮤니티 솔루션

아직 공개된 풀이가 없습니다. 문제를 풀고 첫 풀이를 공유하세요.