codekata #4 (week 1) Same Reverse

Junyoung Kim·2022년 1월 17일
0

algorithm

목록 보기
4/12

문제

숫자인 num을 인자로 넘겨주면, 뒤집은 모양이 num과 똑같은지 여부를 반환해주세요.

num: 숫자
return: true or false (뒤집은 모양이 num와 똑같은지 여부)

예를 들어,

num = 123
return false 
=> 뒤집은 모양이 321 이기 때문
num = 1221
return true 
=> 뒤집은 모양이 1221 이기 때문
num = -121
return false 
=> 뒤집은 모양이 121- 이기 때문
num = 10
return false 
=> 뒤집은 모양이 01 이기 때문

첫번째 풀이

def same_reverse(num):
    number = list(str(num))
    result = []
    for i in range(0,len(number)):
      if number[i] == number[-i-1]:
        result.append(True)
      else:
        result.append(False)

    if all(result):
      return True
    else:
      return False
  • 파라미터 num을 리스트로 변환
  • for문 사용해 num의 첫번째 index와 마지막 index값을 비교
  • 같으면 True를, 다르면 False를 result
  • 전부 True면 뒤집은 모양이 같은 것이므로 all() 함수를 사용하여 True/False값 최종 반환

너무 어렵게 생각해서 코드가 길어졌다. 두번째 풀이에서 쉽게 생각해서 코드를 리팩토링하니 매우 간결해졌다.

두번째 풀이

def same_reverse(num):
    if str(num) == str(num)[::-1]:
      return True
    else:
      return False

num의 elements를 전부 비교하는게 아니라 통째로 뒤집어 비교를 해서 반환하는 것으로 수정했다.

0개의 댓글

관련 채용 정보