[백준] Baekjoon Online Judge
문제
귀여운 아기 리프가 가장 좋아하는 문자열은 "SciComLove"(따옴표 제외)입니다. 귀여운 아기 리프는 아래 과정을 반복하며 문자열을 가지고 놀고 있습니다.
- 문자열의 가장 첫 문자를 떼어낸 뒤, 문자열의 맨 뒤에 붙입니다.
귀여운 아기 리프가 이 과정을 N번 반복한 뒤, 문자열의 최종 상태를 출력하세요.
입력
정수 N이 주어집니다.
출력
문제의 답을 출력합니다. 대소문자에 주의하세요.
풀이
#include <iostream>
using namespace std;
string s = "SciComLove";
void print(int start, int end);
void print(int start, int end) {
for (int i = start; i < end; i++) cout << s[i];
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int N;
cin >> N;
int n = (N % s.length());
print(n, s.length());
print(0, n);
cout << '\n';
return 0;
}
문자열의 가장 첫 문자를 맨 뒤에 붙이는 과정을 N번 반복했을 때, 해당 문자열의 시작 부분은 N % (문자열의 길이)와 같다. 이를 이용하여 문제를 풀었다.
void print(int start, int end) {
for (int i = start; i < end; i++) cout << s[i];
}
원하는 범위의 문자를 출력하는 함수이다.
int n = (N % s.length());
print(n, s.length());
print(0, n);
cout << '\n';
답을 출력하는 부분의 코드이다. N % (문자열의 길이)부터 문자열의 끝까지 출력하고, 0부터 N % (문자열의 길이)까지의 문자를 출력한다.
'백준 > C++' 카테고리의 다른 글
[Baekjoon/C++] 33575번 - 시간표 (0) | 2025.05.12 |
---|---|
[Baekjoon/C++] 3566번 - 대형 스크린 (0) | 2025.05.09 |
[Baekjoon/C++] 15667번 - 2018 연세대학교 프로그래밍 경진대회 (0) | 2025.05.07 |
[Baekjoon/C++] 5618번 - 공약수 (0) | 2025.05.06 |
[Baekjoon/C++] 33810번 - SciComLove (2025) (0) | 2025.05.05 |