codekata4. 숫자 뒤집기

rahula·2021년 6월 24일
1

algorithm

목록 보기
4/9

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

문제 파악

요구사항 : 뒤집은 '모양'이 num과 같은지 여부

내가 이해한 본질 : 문자의 index 성질을 이용해라.

인풋 : 숫자

아웃풋 : boolean타입의 값.

생각하는 과정

첫번째 방법

사실 문제를 보자마자 인덱스 슬라이싱이 떠올랐다. 문자열을 거꾸로 뒤집어주는 기능이 너무 편했다. 그러나 편한만큼 더 생각이 확장되는걸 막는 것 같다.

def same_reverse(num):
    return str(num)[::-1] == num

두번째 방법

슬라이싱 외의 방법이 없는지 생각했고, 반복문을 써보기로 했다.

  1. 반복문 : 각각의 index에 대해 서로 비교
  2. range : iterable한 값을 만들기 위해
  3. 값 비교 : index에 대한 string안의 특정 값 위치와 반대쪽 위치
  4. 조건문 :
  5. 2로 나누기 : 모든 index에 대해 순회할 필요가 없었다. 앞부분과 뒷부분끼리 비교하는 거니까. (string을 반쪽으로 쪼갤 수도 있다)
def same_reverse(num):
	str_num = str(num)
	for i in range(str(num)) // 2:
    	if str_num[i] != str_num[len(str_num) -i -1]
        	return False
	return True

세번째 방법

동명(선생)님이 생각하신 방법.

def same_reverse(num):
	if num < or num % 10 == 0:
    return False
    
    front = num
    back = 0
    
    while front > back:
    	front, mod = divmod(front, 10)
        back = back * 10 + mod
        
	if front == back or back // 10 == front:
    	return True
   	return False

생각과 질문

  1. divmod가 뭐지?
profile
백엔드 지망 대학생

0개의 댓글