언어/C++
[백준10988/c++] 팰린드롬인지 확인하기
연나연
2023. 11. 11. 22:10
해당 문제는 string만 잘 사용할줄 알면 쉽게 풀 수 있는 문제이다.
string 사용법/ 문자열 다루기
string 클래스의 장점
(1) 문자 끝에 null('/0') 등이 포함되지 않는다.
(2) 문자열의 길이를 신경쓸 필요가 없다.
(3) 객체로써 블록이 끝나는 시점에 소멸자가 호출되어 메모리 릭을 걱정할 필요가 없다.
(4) 마치 배열처럼 한 문자씩 다룰 수 있다.
(5) 연산자 오버로딩이 되어 있어 연산자들로 다양한 문자열 연산이 가능하다.
(6) string 클래스의 다양한 메소드를 통해 문자열 가공이 쉽다.
위 장점 중 (3), (5)는 잘 모르겠지만
(4) (6) 같은 장점 덕분에 해당 문제에서 유용하게 사용할 수 있다.
▼string 사용법 다음과 같다
string 선언
#include <string> //string 클래스 포함 헤더
#include <iostream> //iostream안에 string헤더가 포함되어있음
cout << str[4] << endl; //문자열[index]: 배열처럼 index의 위치의 문자를 반환
cout << str.front() << endl; //문자열 맨 앞의 문자를 반환
cout << str.back() << endl; //문자열 맨 끝의 문자를 반환
cout << str.length() << endl; //문자열의 길이를 반환
cout << str.size() << endl; //문자열이 사용하고 있는 Size를 반환
cout << str.capacity() << endl; //문자열에 할당된 메모리 크기 반환
(사실 여기서 length와 size의 차이를 잘 모르겠음..다음에 포스팅하도록 할게요 ㅎㅎ)
string 가공함수
str.clear(); //문자열 초기화
str.erase(); //문자열 전체 지우기
str.erase(5); //earse(n): 문자열 index n까지 지우기
str.push_back('문자'); //문자열 맨 뒤에 '문자'를 추가
str.pop_back(); //문자열 맨 끝 문자 제거
▼내가 사용한 코드는 다음과 같다
#include <iostream>
using namespace std;
int main()
{
string IS_palindrome;
int palindrome =1;
cin >> IS_palindrome;
for (int i = 0; i <= IS_palindrome.size() / 2; i++) {
if (IS_palindrome[i] == IS_palindrome.back()) {
IS_palindrome.pop_back();
}
else {
palindrome = 0;
break;
}
}
cout << palindrome;
}
