백준/C++
[Baekjoon/C++] 24937번 - SciComLove (2022)
베리._.
2025. 5. 8. 15:13
[백준] 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 % (문자열의 길이)까지의 문자를 출력한다.