C++ 학습/C++ 코딩인터뷰[4장]
[4. 기본자료형] 4.9 회문 확인하기
msugi
2024. 12. 26. 17:28
Q 4.9 회문 확인하기
회문이란 앞으로 읽는것과 뒤로 읽는것 모두 동일한 문자열을 말한다.
Ex) 회문O : 1, 7 ,11 ,121, 333, 2147447412
회문X : -1, 12, 100, 2147483647
이때 주어진 10진수 숫자가 회문인지 아닌지 확인하는 프로그램을 작성하시오.
음수는 회문이 될수없다.
최상위 숫자와 최하위 숫자를 만날때까지 자릿수를 비교하는 방법을 사용하면 시간복잡도 O(n), 공간복잡도 O(n) 이 된다.
공간복잡도를 줄이기 위해 다음과 같은 방법을 사용할까 한다.
최상위 숫자와 최하위 숫자가 서로 같은지를 확인하고 같으면 서로 삭제,
다르면 false를 return 하는 방법을 사용하려고 한다.
ex) 157751 이라면 1 == 1 이므로 서로 삭제하고 5775 의 숫자를 확인한다.
5775 의 5==5 이므로 삭제하고 77의 숫자를 확인 한다. 와 같은 방법으로 지워나간다.
해당 코드와 코딩결과는 다음과 같다.