7048 : 카운터 생성기 (Closure)
•시간제한: 1.000 S
•메모리제한: 256 MB
•제출: 0
•통과: 0
•만든사람: suakii
문제 설명
독립된 카운터 상태를 유지하는 함수를 생성하는 클로저(Closure)를 구현해 봅시다.
호출될 때마다 내부 변수 값을 변경하여 현재 카운트 값을 관리하고 반환하는 중첩 함수(Nested Function) 구조를 사용합니다.
[명령어 설명]
-
-
-
-
[제약 조건]
• 명령 수 $N$: $1 \le N \le 1{,}000$
• 카운터 이름: 알파벳 소문자 1글자
호출될 때마다 내부 변수 값을 변경하여 현재 카운트 값을 관리하고 반환하는 중첩 함수(Nested Function) 구조를 사용합니다.
[명령어 설명]
-
CREATE id: 이름이 id인 독립적인 카운터를 새로 생성하며, 초기 카운터 값은 0입니다.-
INC id: 이름이 id인 카운터의 값을 1 증가시킵니다.-
RESET id: 이름이 id인 카운터의 값을 0으로 초기화합니다.-
GET id: 이름이 id인 카운터의 현재 값을 출력합니다.[제약 조건]
• 명령 수 $N$: $1 \le N \le 1{,}000$
• 카운터 이름: 알파벳 소문자 1글자
입력 설명
첫째 줄에 명령어의 개수 N이 주어집니다. (1 ≤ N ≤ 1,000)
둘째 줄부터 N개의 줄에 걸쳐 각 줄에 하나의 명령어가 주어집니다. 카운터의 이름
둘째 줄부터 N개의 줄에 걸쳐 각 줄에 하나의 명령어가 주어집니다. 카운터의 이름
id는 알파벳 소문자 1글자입니다.출력 설명
GET 명령어가 주어질 때마다 해당 카운터의 현재 값을 줄을 나누어 출력합니다.
입력 예시
COPY
복사되었습니다!
복사되었습니다!
7
CREATE a
GET a
INC a
INC a
GET a
RESET a
GET a
출력 예시
COPY
복사되었습니다!
복사되었습니다!
0
2
0
도움
중첩 함수 내부에서 상위 함수의 지역 변수를 수정하려면
nonlocal 키워드를 사용해야 합니다.
def make_counter():
count = 0
def counter(op):
nonlocal count
if op == "INC": count += 1
elif op == "RESET": count = 0
return count
return counter
위와 같이 클로저 함수를 생성하고, 각 카운터 id별로 함수 인스턴스를 저장하여 활용하십시오.