[Algorithm] 코드카타 - reverse

haejun-kim·2020년 8월 4일

[Algorithm]

목록 보기
2/3


파이썬에서는 문자열을 뒤집을 때 slicing을 하고 스텝에 -1을 주면 손쉽게 주어진 문자열을 반대로 뒤집을 수 있는걸 알고 있었기에 이번 문제는 그렇게 어렵지 않게 풀 수 있었다.

My Solution

def reverse(x):
  is_negative = False
  x = str(x)
  
  if x[0] == "-":
    x = x[1:]
    is_negative = True
    
  rev_x = x[::-1]
  
  if is_negative:
    rev_x = "-" + rev_x
    
  rev_x = int(rev_x)
  return rev_x

주어진 문자열을 뒤집어야하기 때문에 우선 x를 문자열로 casting했다. 주어진 조건 중에 주어진 수가 음수인 경우도 판별해야했기에 is_negative라는 Boolean 값을 지정해주었다. 그래서 조건문을 사용해서 만약 주어진 문자열 x의 0번째 요소가 - 일 때, - 부호를 제외한 나머지를 slicing했고, 음수를 판별하는 is_negativTrue로 값을 주었다. 이 경우를 따로 판별하기 위함이다.

이렇게 작업을 한 후 x[::-1] 을 통해 문자열을 반대로 뒤집었고, is_negativeTrue인 경우는 뒤집어진 문자열 rev_x 의 앞에 - 부호만 붙여주었고, 음수가 없었던 경우는 그냥 뒤집은 숫자 그대로 rev_x 변수에 담았다. 현재는 문자열 상태이기 때문에 마지막으로 int로 형변환해주었더니 원하던 출력이 나왔다.

Model Solution

def reverse(number):
	string = str(number)
	if string[0] == '-':
		string = string[::-1]
		new_string = string[-1]+string[:-1]
		return int(new_string)
	string = string[::-1]
	return int(string)

모델 솔루션도 비슷한 비슷한 로직으로 접근하셨어서 오늘의 코드카타는 나름 만족스러웠다.🙂

0개의 댓글