<jupyter_start><jupyter_text>BAEKJOON 5430번 문제 - AChttps://www.acmicpc.net/problem/5430  문제선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다.함수 R은 배열에 있는 숫자의 순서를 뒤집는 함수이고, D는 첫 번째 숫자를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다.함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이다. 예를 들어, "RDD"는 배열을 뒤집은 다음 처음 두 숫자를 버리는 함수이다.배열의 초기값과 수행할 함수가 주어졌을 때, 최종 결과를 구하는 프로그램을 작성하시오.  입력- 첫째 줄에 테스트 케이스의 개수 T가 주어진다. T는 최대 100이다.- 각 테스트 케이스의 첫째 줄에는 수행할 함수 p가 주어진다. p의 길이는 1보다 크거나 같고, 100,000보다 작거나 같다.- 다음 줄에는 배열에 들어있는 수의 개수 n이 주어진다. (0 ≤ n ≤ 100,000)- 다음 줄에는 `[x1,...,xn]`과 같은 형태로 배열에 들어있는 수가 주어진다. (1 ≤ xi ≤ 100) 출력각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.  예제 입력 1 ```4RDD4[1,2,3,4]DD1[42]RRD6[1,1,2,3,5,8]D0[]``` 예제 출력 1```[2,1]error[1,2,3,5,8]error```  풀이 1- func를 하나씩 for문으로 돌려서 R(reverse)와 D(delete) 명령 실행- 결과: 시간초과<jupyter_code>for _ in range(int(input())):
    func = input()
    len_ls = int(input())
    ls = [int(a) for a in input() if a not in ',[]']
    for c in func:
        if len(ls) == 0:
            break
        elif c == 'R':
            ls.reverse()
        elif c == 'D':
            ls.pop(0)

    if len(ls) == 0:
        print("error")
    else:
        print(ls)<jupyter_output>[2, 1]
error
[1, 2, 3, 5, 8]
error<jupyter_text>풀이 2- 함수가 길어질 경우 R(reverse)를 반복하는 것을 피하기 위해    - 처음 명령문 func에서 "R"의 개수를 count해서     - 마지막에 홀수면 ls에 R(reverse)해서 호출, 짝수면 그대로 호출- 반복문에서는     - func에서 첫번째 D를 찾고 그 앞의 R의 개수를 count해서    - 짝수면 `ls.pop(0)`, 홀수면 `ls.pop()'하고    - 첫번째 "D"를 삭제- 결과: 그래도 시간초과<jupyter_code>for _ in range(int(input())):
    func = input()
    len_ls = int(input())
    ls = [int(a) for a in input() if a not in ',[]']
    r = func.count("R")
    
    while func.find("D") >= 0:
        if len(ls) == 0 or func.find("D") == -1:
            break
        else: 
            ls.pop(0) if func.find("D") % 2 == 0 else ls.pop()
        func = func.replace("D", '', 1)

    if len(ls) == 0:
        print("error")
    else:
        print(ls) if r % 2 == 0 else print(ls[::-1])<jupyter_output>[2, 1]
error
[1, 2, 3, 5, 8]
error<jupyter_text>시간 줄이기 위한 추가 아이디어- ls길이보다 func의 "D"의 개수(`func.count("D")`)가 많으면 바로 error    - 위에 풀이에서 쓰지 않았던 입력값-배열에 들어있는 수의 개수 n-을 사용할 수 있음- d_front 횟수와 d_back 횟수를 count해서 마지막에 한번에 ls에서 indexing<jupyter_code># 첫번째 아이디어 적용해도 시간초과

for _ in range(int(input())):
    func = input()
    len_ls = int(input())
    ls = [int(a) for a in input() if a not in ',[]']
    r = func.count("R")
    d = len(func)-r
    
    if d <= len_ls:    
        while func.find("D") >= 0:
            if len(ls) == 0 or func.find("D") == -1:
                break
            else: 
                ls.pop(0) if func.find("D") % 2 == 0 else ls.pop()
            func = func.replace("D", '', 1)

        if len(ls) == 0:
            print("error")
        else:
            print(ls) if r % 2 == 0 else print(ls[::-1])
    else: 
        print("error")<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.15646940822467403, 'fraction_numerical': 0.03276496155132063, 'mean_word_length': 2.21374865735768, 'pattern_counts': {'":': 0, '<': 12, '<?xml version=': 0, '>': 13, 'https://': 1, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '232066', 'license': 'MIT', 'n_tokens_mistral': 1829, 'n_tokens_neox': 2065, 'n_words': 422, 'path': 'Algorithm Problems/deque_baekjoon_5430_AC.ipynb', 'repo_name': 'hyeshinoh/Study_Algorithm', 'size': '2991'}