Recurision - reversing string

Sang Jun Lee·2020년 8월 9일
0

문자열을 뒤집어 표시하는 방법에 대해 알아보고자 합니다. 재귀함수 뿐만 아니라 5가지 방법을 통해 알아보고 상황에 맞게 잘 사용할 수 있으면 좋겠네요.

1. 반복문

def reverse(s):
	str = ""
    for i in s:
    	str = i + str
    return str
  • 반복문을 이용하여 한글자씩 가져와 붙여서 거꾸로 만들어주는 방법입니다.

2. 재귀

def reverse(s):
	if len(s) == 0:
    	return s
    else:
    	return reverse(s[1:]) + s[0]
  • 재귀를 이용하여 문자열을 뒤집어 줍니다. 'hello'가 s로 주어졌다면 'ello'가 다시 s로 주어지고 s[0] 인 'h'가 제일 뒤에 놓여집니다. 다시 돌면서 'llo'가 s로 다시 주어지고 'e'가 'h'앞에 놓여집니다. 이런식으로 거꾸로 놓여서 반환하게 되고 전부 진행되고 s의 길이가 0이 되면 종료가 됩니다.

3. 스택

# Python code to reverse a string 
# using stack 

# Function to create an empty stack. It 
# initializes size of stack as 0 
def createStack(): 
	stack=[] 
	return stack 

# Function to determine the size of the stack 
def size(stack): 
	return len(stack) 

# Stack is empty if the size is 0 
def isEmpty(stack): 
	if size(stack) == 0: 
		return true 

# Function to add an item to stack . It 
# increases size by 1	 
def push(stack,item): 
	stack.append(item) 

# Function to remove an item from stack. 
# It decreases size by 1 
def pop(stack): 
	if isEmpty(stack): return
	return stack.pop() 

# A stack based function to reverse a string 
def reverse(string): 
	n = len(string) 
	
	# Create a empty stack 
	stack = createStack() 

	# Push all characters of string to stack 
	for i in range(0,n,1): 
		push(stack,string[i]) 

	# Making the string empty since all 
	# characters are saved in stack	 
	string="" 

	# Pop all characters of string and put 
	# them back to string 
	for i in range(0,n,1): 
		string+=pop(stack) 
		
	return string 
  • 먼저 빈 스택을 만들어 주고 더하는 함수와 빼는 함수를 만들어 줍니다. 그리고 실제 문자열을 뒤집는 함수에서는 문자를 하나씩 빈 스택에 쌓아주고 그 스택에서 하나씩 꺼내서 (뒤에서 부터 꺼내는 것을 이용) 다시 문자열을 더하여 줌으로 문자를 뒤집어 리턴해줍니다.

4. 확장된 리스트 문법

def reverse(string):
	string = string[::-1]
    return string
  • Extended list syntax를 이용한 문자열 뒤집기로 문자뒤에 [start, stop, step] 개념으로 해당 자리에 아무값도 주지 않으면 기본값 0으로 잡히고 제일 뒤에 -1을 줌으로써 뒤에서 부터 제일 앞에까지 한칸씩 반환하게 됩니다. -2를 주게 되면 꺼꾸로 0번 2번 4번 이렇게 반환하게 됩니다.

5. reverse

def reverse(string):
	string  = "".join(reversed(string))
    return string

*파이썬에 내장된 reversed() 를 이용하여 뒤집어ㅏ 비어있는 문자열에 조인하여 반환하는 방식입니다.

이렇게 다섯 가지 문자열을 뒤집는 방법에 대해 알아보았습니다. 한가지 문제도 이렇게 다양하게 푸는 방식이 있는게 재미있습니다.

profile
Live now and Dream better tomorrow

0개의 댓글