문제 소개
두 개의 문자열 s와 t가 주어졌다고 가정해 봅시다. 우리는 세 줄에 걸쳐 결과를 출력해야 합니다.
- 첫 번째 줄: 문자열 s와 t의 길이를 공백으로 구분하여 출력
- 두 번째 줄: s와 t를 이어 붙인(concatenation) 문자열 출력
- 세 번째 줄: s와 t의 첫 번째 문자를 서로 교환한 후 공백으로 구분하여 출력
예를 들어 입력이 s = "hello", t = "programmer"라면 출력 결과는 다음과 같습니다.
5 10 helloprogrammer pello hrogrammer
문제 해결 접근 방법
이 문제는 다음 단계를 따라 해결할 수 있습니다.
- 문자열 s의 길이를 출력한 뒤 공백 하나를 출력하고, 이어서 t의 길이를 출력합니다.
- s + t를 사용하여 두 문자열을 연결한 결과를 출력합니다.
- 임시 변수 temp에 s[0]의 값을 저장합니다.
- s[0]에 t[0]의 값을 대입합니다.
- t[0]에 temp 값을 대입하여 첫 번째 문자를 교환합니다.
- 교환이 완료된 s를 출력한 뒤 공백 하나를 넣고 t를 출력합니다.
예제 코드
아래 구현 예제를 통해 더 잘 이해해 보겠습니다.
#include <iostream>
using namespace std;
int main(){
string s = "hello", t = "programmer";
cout << s.length() << " " << t.length() << endl;
cout << s + t << endl;
char temp = s[0];
s[0] = t[0];
t[0] = temp;
cout << s << " " << t << endl;
}입력
"hello", "programmer"
출력
5 10 helloprogrammer pello hrogrammer
코드 설명
C++의 string 클래스에서 제공하는 length() 함수를 사용하면 문자열의 길이를 손쉽게 얻을 수 있습니다. 또한 + 연산자를 활용하면 두 문자열을 간단하게 연결할 수 있습니다. 마지막으로 인덱스 접근(s[0], t[0])과 임시 변수를 이용하면 두 문자열의 첫 문자를 안전하게 교환할 수 있습니다. 이 프로그램은 시간 복잡도 O(n) 내에 실행되며, 문자열 처리의 기본기를 익히기에 좋은 예제입니다.