𝘼𝙣𝙖𝙡𝙮𝙨𝙞𝙨/ᴀʟɢᴏʀɪᴛʜᴍ

[Programmers] 문자열 뒤집기

콜라맛갈비 2023. 3. 29. 15:49
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/120822

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

def solution(my_string):
    answer = my_string[::-1]
    
    #answer = ''
    #for i in range(len(my_string)) :
    #    answer += my_string[-i - 1]
    return answer

 

 

방법 1) for문 사용

def solution(my_string):
    answer = ''
    
    for c in my_string :
		answer = c + answer
    return answer

 

방법 2) 리스트 reverse 사용

def solution(my_string):
	my_string_list = list(my_string) #문자열->리스트
    
    my_string_list.reverse() #리스트를 역순으로
    
    answer = ''.join(my_string_list) #리스트->문자열
    
    return answer

 

방법 3) [::-1] 문자열 슬라이싱

def solution(my_string):
    answer = my_string[::-1]
    
    return answer

name[::1]은 기존 name과 동일하게 문자열이 생성된 것을 볼 수 있습니다.

name[::2]는 name 문자열에서 한 칸씩 띄워져서 문자열이 생성된 것을 볼 수 있습니다.
앞부분만 살펴보자면 BlockDM 여기에서 B, o, k, M 순으로 
인덱스 순으로 보면 0, 2, 4, 6 이렇게 문자가 잘려서 작업이 되는 것을 볼 수 있습니다.

name[::-1]은 name 문자열에서 역순으로 하나씩 잘라서 문자열을 생성합니다.
인덱스를 기준으로 보면 name[-1] 자르고 name[-2] 자르고 name[-3] 자르고 ..
이런 식으로 문자열을 뒤에서부터 하나씩 잘라서 새롭게 문자열을 만들게 됩니다.

name[::-2]는 name 문자열에서 역순으로 하나씩 자르되 한 칸씩 띄워서 자르게 됩니다.
(인덱스 기준으로 2씩 차이 나게)

인덱스 기준으로 보면 name[-1] 자르고 name[-3] 자르고 name[-5] 자르고
이런식으로 자르게 됩니다.

 

 

 

참고) https://blockdmask.tistory.com/581

 

728x90