Notice
Recent Posts
Link
정화 코딩
[C++] 건공문자열 (백준 30823번) 본문

https://www.acmicpc.net/problem/30823

처음에는 그냥 진짜 문제 지문 그대로 구현했더니 시간 초과를 받아서 대충 이런식으로... 몇개 해보면서 규칙을 찾았다.
규칙을 정리하면 다음과 같다.
뒤의 (n - k + 1)개의 문자들을 순서를 유지하고 그대로 앞으로 나온다.
앞의 (k - 1)개의 문자들은 뒤로 가는데, 이 순서는 주의가 필요하다. n + k가 홀수면 순서를 유지하고 그대로 붙고, 짝수면 뒤집힌 순서로 붙는다.
#include <iostream>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, k;
cin >> n >> k;
string s;
cin >> s;
string ans;
ans.resize(n);
if ((n + k) % 2 == 1) {
for (int i = 0; i < k - 1; i++) {
ans[n - k + 1 + i] = s[i];
}
} else {
for (int i = 0; i < k - 1; i++) {
ans[n - i - 1] = s[i];
}
}
for (int i = k - 1; i < n; i++) {
ans[i - k + 1] = s[i];
}
cout << ans << '\n';
}
(AC)
string ans;
ans.resize(n);
문자열 크기를 지정하고 싶으면 위와 같이 하면 된다.
'PS' 카테고리의 다른 글
[C++] 삼각형만들기 (백준 2622번) (0) | 2025.04.10 |
---|---|
[C++] 아기 상어 (백준 16236번) (2) | 2025.04.07 |
[C++] 치킨 배달 (백준 15686번) (0) | 2025.04.04 |
[C++] 반복수열 (백준 2331번) (0) | 2025.04.04 |
[C++] IQ Test (백준 1111번) (0) | 2025.04.02 |