#18. [백준_C언어] 1259 : 팰린드롬수

 

 입력 코드 

#include <stdio.h>

int main(void)
{
	int num;

	while (1)
	{
		scanf("%d", &num);

		if (num == 0)
			return 0;

		int reverse_num = 0;
		int temp = num;

		while (num > 0)
		{
			reverse_num *= 10;
			reverse_num += (num % 10);
			num /= 10;
		}
		if (temp == reverse_num)
			printf("yes\n");
		else
			printf("no\n");
	}

	return 0;
}

 

 코드 설명 

배열 / 수 뒤집기를 이용하는 문제

#include <stdio.h>
#include <string.h>

main() {
	int i,j;
	char s[100000];

	scanf("%s", s);
	int l = strlen(s);
	int m = l / 2;

	if((l%2)==0)
		for (j = 0; j < m; j++) {
			if (s[m - j] == s[m + j])
				printf("yes\n");
			else
				printf("no\n");
		}
	else
		for (j = 0; j < m; j++) {
			if (s[m - j-1] == s[m + j])
				printf("yes\n");
			else
				printf("no\n");
		}
}

처음에는 문자열 길이가 짝수일때와 홀수일때 경우를 나눠서 문자열의 가운데를 기준으로 비교했다. 그런데 반복문을 돌면서 전체적으로 조건문을 만족하면 yes/no를 출력하는 게 아니라 비교할때마다 출력하도록 작성한 것이었다.

 

2021/01/04 - [C] - #8. [백준_C언어] 2920번 : 음계

이 문제랑 약간 비슷한 것 같았다.

#include <stdio.h>
#include <string.h>

main() {
	int i,j,p;
	char s[100000];

	scanf("%s", s);
	int l = strlen(s);
	int m = l / 2;

	if((l%2)==0)
		for (j = 0; j < m; j++) {
			if (s[m - j] == s[m + j])
				p = 1;
			else
				p = 2;
		}
	else
		for (j = 0; j < m; j++) {
			if (s[m - j - 1] == s[m + j])
				p = 1;
			else
				p = 2;
		}

	if (p == 1)
		printf("yes\n");
	else if (p == 2)
		printf("no\n");
}

그래서 새로운 변수를 설정하고 다시 반복문을 작성했는데도 결과가 제대로 출력되지 않았다. 그리고 0으로 입력이 끝나는 게 아니라 한 번밖에 입력하지 못했다.

 

시간 초과로 찾아봤더니 수 뒤집기를 활용해서 풀 수도 있는 문제였다.

↓↓↓ 참고한 사이트

karen0117.tistory.com/57

 

[백준(BOJ)] 1259번 팰린드롬수, C언어 풀이

<팰린드롬수>, 1259번 문제 어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. 'radar', 'sees'는 팰린드롬이다. 수도 팰린드롬으로 취급할 수 있다. 수의 숫자들을 뒤에서부터

karen0117.tistory.com

이건 내가 원래 하려던 방법

 

velog.io/@yujo/BOJ-1259-%ED%8C%B0%EB%A6%B0%EB%93%9C%EB%A1%AC%EC%88%98

 

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

input으로 들어오는 숫자가 크지 않으므로(1 ~ 99999) 들어오는 숫자를 뒤집어서 reverse_num에 담아주고 reverse_num에 담긴 숫자가 input으로 들어온 숫자와 일치하는지 판별 후 "Yes" 또는 "No"를 반환하도

velog.io

blog.naver.com/tipsware/221287499666

 

[Quiz] 정숫값을 거꾸로 출력하기

: C 언어 관련 전체 목차 http://blog.naver.com/tipsware/221010831969 1. 문제 아래의 예제에서 비어있...

blog.naver.com

 

 문제 출처 

www.acmicpc.net/problem/1259

 

1259번: 팰린드롬수

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

www.acmicpc.net