본문 바로가기

BAEKJOON/구현

백준 1259번 [팰린드롬수](C++)-yes6686- 티스토리

728x90
SMALL

백준 문제 풀이: 1259 [팰린드롬수]


문제 링크: https://www.acmicpc.net/problem/1259

문제 설명:

어떤 숫자가 앞에서부터 읽으나 뒤에서부터 읽으나 같으면 이를 "팰린드롬수"라고 합니다. 여러 숫자에 대해 팰린드롬인지 판단하는 프로그램을 작성하세요. 입력의 끝은 0이며, 이 값은 판단하지 않습니다.


문제 해결 코드


#include <iostream>
using namespace std;

int main() {
    string n;
    while (true) {
        cin >> n;
        if (n == "0") { // 입력 종료 조건
            break;
        }

        bool isPalindrome = true;
        for (int i = 0; i < n.length() / 2; i++) {
            if (n[i] != n[n.length() - 1 - i]) { // 앞뒤 문자가 다르면
                isPalindrome = false;
                break;
            }
        }

        if (isPalindrome) {
            cout << "yes" << '\n';
        } else {
            cout << "no" << '\n';
        }
    }
}

코드 설명

  • 핵심 아이디어: 문자열의 앞뒤를 비교하여 팰린드롬인지 확인합니다.
  • 구현 세부사항:
    • 입력 문자열이 "0"이면 프로그램을 종료합니다.
    • 문자열의 길이의 절반만큼 반복하며 앞뒤 문자를 비교합니다.
    • 비교 과정에서 다른 문자를 발견하면 isPalindromefalse로 설정합니다.
  • 시간 복잡도: O(n * m)
    • n: 입력 문자열의 개수.
    • m: 각 문자열의 길이.

결과

입력된 여러 숫자에 대해 팰린드롬 여부를 정확히 판단합니다. 직관적이고 효율적인 구현으로 요구사항을 만족합니다.

다른 접근 방식이나 궁금한 점이 있다면 알려주세요!

728x90
LIST