1259. 팰린드롬수

박진우·2023년 4월 7일
0

문제 링크:

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

코드(C):

#pragma warning (disable:4996)
#include <stdio.h>
#include <string.h>

int main(void) {
	char a[6];
	int i = 0;
	int result = 1;
	while (scanf("%s", a) && a[0] != '0') {
		for (i = 0; i < strlen(a) / 2; i++) {
			if (a[i] != a[strlen(a) - i - 1]) {
				result = 0;
				break;
			}
		}
		if (result) printf("yes");
		else printf("no");
		printf("\n");
		result = 1;
	}

	return 0;
}

풀이:

팰린드롬이란, 앞으로 읽어도 반대로 읽어도 같은 단어를 말한다. 즉 팰린드롬수는 앞으로 읽어도 반대로 읽어도 같은 숫자를 말한다. 12321 등의 숫자는 팰린드롬수이다.
사용자로부터 수를 입력받아 이 수가 팰린드롬수인지 검사하기 위해서 내가 사용한 방법은 입력받는 자료형을 수가 아닌 문자열로 받아, for문에서 (문자열 길이) / 2번 반복하여 i번째 문자와 (문자열 길이) - i - 1번째 문자와 비교해 값이 한 번이라도 다르면 반복을 종료 후 no를 출력, 다르지 않으면 yes를 출력하도록 만들었다.
이 문제는 이것 말고도 다른 방식의 풀이가 있는데, 자료구조 stack을 이용한 방식으로 문자열을 입력받아 stack에 push하여 저장한 후, pop한 문자와 입력된 문자를 하나씩 비교하는 방식도 있다. 이 방식은 자료구조에 대해 좀 더 학습을 한 후 시도해보고 싶다.

profile
SRIHS Infosec

0개의 댓글