문제
핵심
- 앞과 뒤 동시 적용
- 문자열의 갯수에 따라 처리[Segfault 방지]
예제
input: abcdef
output: afbecd
input: aba
output: aab
알고리즘
start
, end
변수 정의
- 각각 시작 인덱스, 마지막 인덱스를 정의하고 있음
- Case 1: 문자열의 길이가 짝수일 때
start
< end
조건이 만족할 때 까지
- input[start], input[end] 동시출력
- start++, end--
- Case 2: 문자열의 길이가 홀수일 때
- 무한반복
start == end
라면, start
만 출력하고 반복문 종료
- input[start], input[end] 동시출력
- start++, end--
코드
#include <iostream>
using namespace std;
int main() {
string input;
getline(cin, input);
int start = 0;
int end = input.length()-1;
if (input.length() == 0) {
cout << "" << endl;
return 0;
}
if (input.length() % 2 == 0) {
while (start < end) {
cout << input[start] << input[end];
start++;
end--;
}
cout << endl;
} else {
while (true) {
if (start == end) {
cout << input[start] << endl;
break;
}
cout << input[start] << input[end];
start++;
end--;
}
}
return 0;
}