궤도

[EPPER] 10회 3번 본문

💻 현생/⛓ 알고리즘

[EPPER] 10회 3번

영이오 2020. 10. 8. 22:47

문제

 


풀이

 

입력이 숫자니까 int로 받아야한다는 생각에서 벗어나면 금방 풀린다. 숫자를 문자열로 받고 각 자릿수에 접근하기 쉽다는 문자열의 특성을 이용해 양끝에서부터 비교하면 된다. 홀짝을 나눌 필요는 없다. 코드를 보면 알겠지만 가운데 숫자라면 자기자신과 비교하게 된다.

일치하지 않는 부분을 발견하는 순간 isPal을 false로 바꿔주고 반복문을 빠져나오면 된다.


소스코드

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdbool.h>

int main() {
	char num[101];
	bool isPal = true;

	scanf("%s", &num);
	int length = strlen(num);
	for (int i = 0; i < length / 2; i++) { //숫자를 배열로 받아서 앞 뒤 일치하는지 확인
		if (num[i] != num[length - i - 1]) {
			isPal = false;
			break;
		}
	}
	if (isPal)
		printf("yes\n");
	else
		printf("no\n");
}
Comments