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"이면 프로그램을 종료합니다.
- 문자열의 길이의 절반만큼 반복하며 앞뒤 문자를 비교합니다.
- 비교 과정에서 다른 문자를 발견하면
isPalindrome
을false
로 설정합니다.
- 시간 복잡도: O(n * m)
- n: 입력 문자열의 개수.
- m: 각 문자열의 길이.
결과
입력된 여러 숫자에 대해 팰린드롬 여부를 정확히 판단합니다. 직관적이고 효율적인 구현으로 요구사항을 만족합니다.
다른 접근 방식이나 궁금한 점이 있다면 알려주세요!
728x90
LIST
'BAEKJOON > 구현' 카테고리의 다른 글
백준 1966번 [프린터 큐](C++)-yes6686- 티스토리 (0) | 2024.01.02 |
---|---|
백준 1074번 [Z](C++)-yes6686- 티스토리 (0) | 2023.12.23 |
백준 11720번 [문자와 문자열](C++)-yes6686- 티스토리 (0) | 2023.12.21 |
백준 25083번 [새싹](C++)-yes6686- 티스토리 (0) | 2023.12.21 |
백준 11654번 [아스키 코드](C++)-yes6686- 티스토리 (0) | 2023.12.21 |