← 실전 문제

겹친 명령의 실행 횟수

C++빈칸 채우기

문자열에 적힌 명령을 풀어서 실행해요. 소문자 하나는 명령 한 번이고, k[내용]은 내용을 k번 반복한다는 뜻이에요. 반복 안에 반복이 들어갈 수 있어요. 명령의 종류와 관계없이 총 몇 번 실행하는지 구해요.

long long solution(string commands)가 총 실행 횟수를 반환하도록 두 빈칸을 채워 주세요. 명령 문자열을 실제로 모두 펼칠 필요는 없어요.

매개변수와 반환값

문자열 길이는 0200이에요. 문자는 az, 19, [와 ]만 사용해요. 숫자는 반드시 바로 뒤의 [와 짝을 이루고, 모든 대괄호가 올바르게 짝지어진 유효한 문법이에요. 숫자는 한 자리예요. 대괄호 안은 비어 있지 않아요. 반복·소문자를 나란히 이어 쓸 수 있어요. 최대로 겹친 반복의 깊이는 8, 총 실행 횟수는 01,000,000,000이에요. 빈 문자열이면 0을 반환해요.

예시

  1. a2[bc]d → 6: a, bc, bc, d를 실행하므로 1+2×2+1=6이에요.
  2. 2[a3[b]] → 8: 안쪽 3[b]는 세 번, a3[b]는 네 번이에요. 이를 두 번 실행해요.

자동 채점 입력·출력

입력 한 줄 전체가 commands예요. 빈 문자열은 빈 줄로 전달해요. 실행 횟수를 한 줄에 출력해요. main은 채점용이며 작성 대상은 두 빈칸이에요.

예시 입력

a2[bc]d

예상 결과

6

예시 입력

2[a3[b]]

예상 결과

8
핵심 개념
  • string-parsing: 유효한 반복 문법을 읽고 숫자·문자·괄호를 구분해요.
  • stack-queue: 가장 안쪽 상태부터 꺼내 바깥 상태와 합쳐요.
  • stl-string: 문자열을 펼치지 않고 순회해요.

코드 작성과 채점은 로그인 후 이용해요

로그인하고 풀기