문자열 한 개 입력으로 주어지고 q개의 요청이 주어지면, 각 요청을 수행한 결과를 모두 출력하는 코드를 작성해보세요. 요청의 종류에는 아래의 세 가지가 있습니다.
가장 앞에 있는 문자를 제외한 나머지 문자를 한 칸씩 앞으로 당기고 가장 앞에 있던 문자를 가장 뒤로 옮깁니다.
가장 뒤에 있는 문자를 제외한 나머지 문자를 한 칸씩 뒤로 밀고 가장 뒤에 있던 문자를 가장 앞으로 옮깁니다.
문자열을 좌우로 뒤집습니다.
첫 번째 줄에는 시작 문자열과 요청의 개수 q가 공백을 사이에 두고 주어지고,
두 번째 줄부터는 q개의 줄에 걸쳐 요청이 주어집니다. 잘못된 형태의 요청은 주어지지 않습니다.
1 ≤ 초기 문자열의 길이 (n) ≤ 1,000
1 ≤ q ≤ 1,000
입력:
abcd 4 1 1 2 3
출력:
bcda cdab bcda adcb
- 문자열을 앞으로 당기기 위해서는 가장 앞의 문자를 임시 변수에 저장한 뒤, 문자열을 앞부터 순회하며 문자열을 한 칸씩 앞으로 당겨주고 문자열의 제일 뒤에 임시 벼수에 저장된 문자를 넣어준다.
- 문자열을 뒤로 밀기 위해서는 가장 뒤의 문자를 임시 변수에 저장한 뒤, 문자열을 뒤부터 순회하며 문자열을 한 칸씩 뒤로 밀어주고 문자열의 제일 앞에 임시 변수에 저장된 문자를 넣어준다.
- 문자열을 좌우로 뒤집기 위해서는 문자열의 절반에 대하여 순회를 하면서 좌우 대칭 위치에 있는 문자와
swap
을 해준다.# 문자열과 q를 입력받습니다. string, q_num = input().split() # 문자열 내 값을 직접 변경하기 위해서는 리스트로 변환하여 해결합니다. list_str = list(string) q_num = int(q_num) # 문자열의 길이를 구합니다. str_size = len(list_str) # q개의 질의를 수행합니다. for i in range(q_num): # 요청을 입력받습니다. q_type = int(input()) if q_type == 1: # step1: 가장 앞의 문자를 저장한 뒤, # step2: 문자열을 앞부터 순회하며 문자를 한 칸씩 앞으로 당기고 # step3: 문자열의 제일 뒤에 가장 앞에 있던 문자를 넣어줍니다. front = list_str[0] # step1 for i in range(1, str_size): # step2 list_str[i - 1] = list_str[i] list_str[str_size - 1] = front # step3 # 리스트를 문자열로 변환하여 출력합니다. print("".join(list_str)) elif q_type == 2: # step1: 가장 뒤의 문자를 저장한 뒤, # step2: 문자열의 뒤부터 순회하며 문자를 한 칸씩 뒤로 밀어주고 # step3: 문자열의 제일 앞에 가장 뒤에 있던 문자를 넣어줍니다. back = list_str[str_size - 1]; # step1 for i in range(str_size - 1, 0, -1): # step2 list_str[i] = list_str[i - 1] list_str[0] = back # step3 # 리스트를 문자열로 변환하여 출력합니다. print("".join(list_str)) else: # 문자열의 앞부터 순회하며 좌우 대칭 위치에 있는 문자와 swap해줍니다. # 단, 문자열의 절반만 순회해줍니다. for i in range(str_size // 2): temp = list_str[i] list_str[i] = list_str[str_size - i - 1] list_str[str_size - i - 1] = temp # 리스트를 문자열로 변환하여 출력합니다. print("".join(list_str))