앞에서부터 읽을 때와 뒤에서부터 읽을 때 똑같은 단어를 팰린드롬(palindrome)이라고 합니다. 예를들어서 racecar, 10201은 팰린드롬 입니다.
두 자연수 n, m이 매개변수로 주어질 때, n 이상 m 이하의 자연수 중 팰린드롬인 숫자의 개수를 return 하도록 solution 함수를 완성해 주세요.
m은 500,000이하의 자연수이며, n은 m 이하의 자연수입니다.
n | m | result |
---|---|---|
1 | 100 | 18 |
100 | 300 | 20 |
입출력 예 #1
1 이상 100 이하의 팰린드롬은 다음과 같이 18개가 있습니다.
1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99
입출력 예 #2
100 이상 300 이하의 팰린드롬은 다음과 같이 20개가 있습니다.
101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292
1) n부터 m 사이에서 반복문을 통해 숫자를 문자로 바꾼다.
2) split("") 배열로 바꾼 후, 배열 안의 요소의 순서를 reverse()로 거꾸로 뒤집고 다시 문자로 만든다(join)
3) 이 값과 원래 값이 같다면 팰린드롬이므로, answer의 값을 증가시킨다.
파이썬은 문자열을 뒤집는 것을 [::-1] 하나로 아주 간단하게 구현할 수 있다.
while(True):
a = input()
if a == "0":
break
elif a == a[::-1]:
print("yes")
else:
print("no")
두 자연수 n, m이 매개변수로 주어질 때, n 이상 m 이하의 자연수 중 팰린드롬인 숫자의 개수를 return 하도록 solution 함수를 완성해 주세요.
#오류
def solution(n, m):
answer = 0
while(True):
if a == 0
break
elif a == a[::-1]:
return += 1
else:
break
return answer
import sys
ans = []
input = sys.stdin.readline
while True:
n = input().rstrip()
if n == '0':
break
start = 0
flag = True
for i in range(len(n)//2):
end = len(n)-1-start
if n[start] != n[end]:
ans.append("no")
flag = False
break
else:
start += 1
if flag:
ans.append("yes")
for i in ans:
print(i)