728x90
문제 1259번
https://www.acmicpc.net/problem/1259
1259번: 팰린드롬수
입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다.
www.acmicpc.net
문제를 보니 입력받는 변수말고 입력받은 것을 반대로 저장할 변수를 하나 더 만들어주면 될 것 같다. 입력값을 반대로 저장해주기 위해 string을 이용한다. 그렇게 입력값의 길이만큼 반복하여 인덱스를 알맞게 넣어 반대로 저장할 변수에 더해준다(입력값 길이에서 i를 빼주어 인덱스를 반대부터 해주도록 하고 인덱스니까 1을 한번 더 빼줌). 그렇게 두 변수를 비교하여 같으면 yes를 다르면 no를 출력해준다. 만약 입력값이 0이면 반복문을 빠져나온다.
여기서 내가 실수한게 있다...
- 내가 만든 변수는 string 타입이기 때문에 0인지 비교하려면 0에 ""를 붙여줘야 함
- temp는 한번 반복할 때마다 초기화해줘야 함(안 하면 그 전 값들이 함께 저장됨)
ㅎㅎ...
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
while (s != "0") {
string temp;
cin >> s;
if (s == "0") {
break;
}
for (int i = 0; i < s.length(); i++) {
temp += s[s.length() - 1 - i];
}
if (temp == s) {
cout << "yes" << "\n";
}
else {
cout << "no" << "\n";
}
}
return 0;
}
아 그리고 reverse() 함수가 있는 것을 깜빡해서 이것을 이용하여 풀기도 해봤다.
#include <iostream>
#include <string>
#include <algorithm> //reverse 함수
using namespace std;
int main() {
string s,temp;
while (s != "0") {
cin >> s;
temp = s;
reverse(temp.begin(), temp.end());
if (temp == "0") {
break;
} else if (temp == s) {
cout << "yes" << '\n';
} else {
cout << "no" << '\n';
}
}
return 0;
}
728x90
'백준 > C++' 카테고리의 다른 글
[C++] 백준 1100번 - 하얀 칸 (0) | 2024.04.05 |
---|---|
[C++] 백준 1032번 - 명령 프롬프트 (0) | 2024.04.03 |
[C++] 백준 1159번 - 농구 경기 (2) | 2024.04.01 |
[C++] 백준 1152번 - 단어의 개수 (0) | 2024.03.31 |
[C++] 백준 3052번 - 나머지 && 백준 11720번 - 숫자의 합 (0) | 2024.03.30 |