Problem Solving/BOJ

[백준 / BOJ] C++ 1259 팰린드롬수

nageune 2023. 2. 12. 18:26
728x90
반응형

1259번: 팰린드롬수

 

문제

https://www.acmicpc.net/problem/1259

 

1259번: 팰린드롬수

입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다.

www.acmicpc.net

 

 

풀이

문자열 S를 입력받고 왼쪽 끝과 오른쪽 끝에서부터 차례대로 문자가 같은지 확인하며 같은 개수를 센다. 하나라도 틀리다면 "no"를 출력한다. 아니라면 탐색을 모두 끝내면 "yes"를 출력한다.

 

오래전에 푼 문제라 너무 어렵게 푼 것 같다. 그냥 문자열을 복사해 두고 <algorithm> 헤더의 reverse() 함수를 사용해 뒤집어서 같은지 비교만 하면 풀 수 있는 간단한 문제다.

 

 

코드

#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  while (1) {
    string s;
    cin >> s;
    if (s == "0")
      break;
    int cnt = 0;
    for (int i = 0; i < floor((float)s.size() / 2 + 0.5); i++) {
      if (s[i] != s[s.size() - i - 1]) {
        cout << "no\n";
        break;
      } else {
        cnt++;
      }
    }
    if (cnt == floor((float)s.size() / 2 + 0.5))
      cout << "yes\n";
  }
  return 0;
}

 

728x90
반응형