SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
어떤 문자열 S가 주어졌을 때,
숫자 리스트에서 X가 양수이면 맨앞 글자를 맨 뒤로 보내는 것을 X번,
X가 음수이면, 맨뒷 글자를 맨 앞으로 보내는 것을 X번,
0이라면 아무 행동도 취하지 않는다.
아이디어 :
모든 횟수를 더한 뒤,
절댓값을 취한 후 문자열 길이로 나눈 나머지를 기억한다.
이 나머지만큼 모든 횟수의 합이 양수라면 맨 앞 글자를 맨 뒤로 보내고,
음수라면 맨 뒷 글자를 맨 앞으로 보낸다.
여기서, 반복해서 보내는 것을 미리 문자열 slicing하는 것으로 대체할 수 있다.
T = int(input())
for t in range(T) :
S = input()
length = len(S)
K = int(input())
X = map(int, input().split())
final_X = sum(X)
remain = abs(final_X) % length
if final_X > 0 :
S = S[remain:] + S[:remain]
elif final_X < 0 :
S = S[length - remain:] + S[:length - remain]
print(S)
절댓값이 중요하다.
절댓값 안 취해주니, 음수의 나눗셈의 나머지 계산이 생각해 두었던 것과 달라진다.
'코테풀이 > SW Expert Academy' 카테고리의 다른 글
| 1208. [S/W 문제해결 기본] 1일차 - Flatten (0) | 2025.11.18 |
|---|---|
| 25469. 페인트칠 (0) | 2025.11.18 |
| 25655. 유치원생은 쉽게 푸는 문제 (0) | 2025.11.17 |
| 1954. 달팽이 숫자문제 (0) | 2025.11.17 |
| 1206. [S/W 문제해결 기본] 1일차 - View (0) | 2025.11.17 |