728x90
반응형
https://www.acmicpc.net/problem/30823
문제 해결
- 시간초과에 고민을 많이 해보게 된 문제
- 하나씩 돌리면 당연히 정답이 나오지만 숫자가 500000까지 가능하므로 시간초과가 난다.
- 따라서 규칙을 찾아야한다.
- 규칙은 직접 해보면서 찾는 것이 쉽다.
- 먼저 K번째 문자부터 끝문자까지 순서대로 나온다는 것을 알 수 있다.
- 그리고 N과 K의 차이가 홀수면 앞에 K-1번째 문자까지 순서대로 나오고 짝수이면 K-1번째 문자까지 역순으로 나온다.
- 예외조건이 있는데 K=1이면 그냥 문자열이 그대로 나온다는 예외가 있으니 확인해야한다.
CODE
import sys
input = sys.stdin.readline
N, K = map(int, input().split())
A = str(input().rstrip())
if K==1:
answer = A
elif (N-K)%2:
answer = A[K-1:] + A[:K-1]
else:
answer = A[K-1:] + A[K-2::-1]
print(answer)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 1069 집으로 (2) | 2023.12.07 |
---|---|
[python] 백준 1981 배열에서 이동 (0) | 2023.12.04 |
[python] 백준 2234 성곽 (2) | 2023.12.03 |
[python] 백준 1358 하키 (0) | 2023.11.30 |
[python] 백준 7579 앱 (0) | 2023.11.26 |
댓글