Skip to content

Latest commit

 

History

History
65 lines (42 loc) · 1.6 KB

2018-04-16-1.md

File metadata and controls

65 lines (42 loc) · 1.6 KB

이 문제의 저작권은 매일프로그래밍(https://mailprogramming.com/)에 있습니다.

문제

  • 매일프로그래밍 - Question 4
  • 정수(int)가 주어지면, 팰린드롬(palindrome)인지 알아내시오. 팰린드롬이란, 앞에서부터 읽으나 뒤에서부터 읽으나 같은 단어를 말합니다. 단, 정수를 문자열로 바꾸면 안됩니다.

풀이

  • while문을 이용해서 제일 앞과 뒤를 가운데로 이동하면서 서로 비교하는 방법을 이용

코드

# 문제 조건에서 음수는 palindrome이 될 수 없다고 함 이미
def is_palindrome(n):

	# 엣지케이스부터 제거하자

	# 음수일 경우
	if n<0: return False

	# 0으로 끝나도 안된다.
	if n>=10 and n//10 == 0: return False

	# 최고 차수 찾기
	left = 1
	while n//left != 0:
		left *= 10
	left = left//10

	while n > 0 :

		left_num = n//left
		right_num = n%10

		#print("left_num : " + str(left_num) + " " + "right_num : " + str(right_num) + " " + "n : " + str(n))
		if left_num != right_num:
			return False

		n = n - left_num*left
		n = n // 10
		left //= 100

	return True


print(is_palindrome(12345))
print(is_palindrome(-101))
print(is_palindrome(1111))
print(is_palindrome(12321))
print(is_palindrome(0))

반성

  • 푸는 시간 : 21분
  • 나눗셈을 할 때 몫의 경우에 파이썬의 경우에는 float을 반환 해주는데 이 부분에 대한 처리가 실수가 있어서 실수와 정수를 비교하는 실수를 했다.
  • 몫을 구하는 연산과 나머지 연산에서 실수를 하였다.

참고자료