준호씨의 블로그

20200202 palindrome day. 오늘은 회문의 날 본문

개발이야기

20200202 palindrome day. 오늘은 회문의 날

준호씨 2020. 2. 2. 19:54
반응형
>>> print(is_palindrome("20200202"))
True

오늘은 2020년 2월 2일 인데 YYYYMMDD 형태로 표현하면 20200202 이다. 순서대로 읽는 것과 반대로 읽는 것이 같은 회문(Palindrome)이다. (회문의 예: 토마토, 기러기 등등)

외국식 표기로도 회문

MMDDYYYY 형태로 표현하면 02022020 으로 이 역시 회문이다.

DDMMYYYY 형태로 표현해도 02022020 으로 이 역시 회문이다.

다음 회문의 날은? (YYYYMMDD 기준)

오늘 (2020년 2월 2일) 부터 2999년 12월 31일 까지의 회문 day 를 구해보면 다음과 같다. YYYYMMDD 표기 기준이다.

20200202
20211202
20300302
20400402
20500502
20600602
20700702
20800802
20900902
21011012
21100112
21111112
21200212
21211212
21300312
21400412
21500512
21600612
21700712
21800812
21900912
22011022
22100122
22111122
22200222
22211222
22300322
22400422
22500522
22600622
22700722
22800822
22900922

python 으로 짠 코드를 첨부해 본다.

import math
from datetime import timedelta, date


def is_palindrome(input_str):
    half = len(input_str) / 2
    left = input_str[:int(half)]
    right = input_str[math.ceil(half):][::-1]

    if left == right:
        return True
    else:
        return False


def daterange(start_date, end_date):
    for n in range(int((end_date - start_date).days)):
        yield start_date + timedelta(n)


start = date(2020, 1, 1)
end = date(2999, 12, 31) + timedelta(1)

for idx, date in enumerate(daterange(start, end)):
    date_yyyymmdd = date.strftime("%Y%m%d")
    if is_palindrome(date_yyyymmdd):
        print(date_yyyymmdd)

 

반응형
Comments