좋은 알고리즘이란?알고리즘이란?선수 과제

Q

이유가 궁금합니다

조회 991

좋아요 2

2021년 3월 6일

def is_palindrome(word):

  list_word = list(word)

  for i in range(len(word)//2):

    if list_word[i] == list_word[-i-1]:

      return True

    else:

      return False


  for i in range(len(word)//2): 여기서 //2를 하는 이유가 궁금합니다.

A
1개의 답변이 있어요
커뮤니티 파트너 채택

첨부해주신 코드는 list_word의 0번째 인덱스와 마지막 인덱스부터 시작해 서서히 가운데로 좁혀들어오며 문자를 비교합니다.

len(word) // 2 대신 len(word)로만 for문을 실행해도 값은 똑같이 나오겠지만 이미 '첫 번째와 마지막 글자를' 비교했는데, 마지막 반복에서 '마지막 글자와 첫 번째 글자를' 비교할 필요는 없기 때문입니다. for문은 단어 길이의 반만 돌아도 충분히 판별이 가능하단 뜻이지요.


여담으로, 첨부해주신 코드에서 정의된 함수는 의도한 대로 팰린드롬을 판별할 수 없습니다.

print(is_palindrome('abca'))  # 회문이 아님에도, True가 출력됩니다.

함수 내에서 Return문이 어떻게 작동하는지 생각해보시고, 제대로 동작하도록 고쳐보시는 것도 좋을 것 같습니다.

2021년 3월 6일

(주) 코드잇

대표강영훈

개인정보보호책임자강영훈

이메일support@codeit.kr

사업자 번호313-86-00797

통신판매업제 2019-서울중구-1034 호

주소서울특별시 중구 청계천로 100 시그니쳐타워 동관 10층 코드잇