<aside> 💬 lv0, 문자열 처리, 이동

문자열 오른쪽 순환 이동

문제 설명

주어진 문자열과 정수 N에 대해, 문자열을 오른쪽으로 N번 순환 이동시키는 코드를 작성해주세요. 문자열의 각 문자는 오른쪽으로 이동하며, 문자열의 끝에 도달하면 다시 문자열의 시작으로 이동합니다. 예를 들어, 문자열 "abcd"를 1번 오른쪽으로 이동시키면 "dabc"가 됩니다. 문자열과 이동 횟수 N이 주어졌을 때, 이동 후의 문자열을 반환하세요.


제한 사항


입출력 예

입력 (문자열, N) 출력 (이동 후 문자열)
("abcd", 1) "dabc"
("hello", 3) "llohe"
("data", 2) "tada"

입출력 설명

문자열을 오른쪽으로 주어진 횟수만큼 순환 이동시킨 후의 결과를 반환합니다. 예를 들어, "hello"를 3번 오른쪽으로 이동시키면, "llohe"가 됩니다.

</aside>

풀이 1. 슬라이싱 활용

def solution(data):
    string, count = data **#1 data 언패킹**
    return string[-count:] + string[:-count] **#2 문자열 처리후 반환**

단계별 풀이 전략

  1. data 언패킹

    튜플 data를 입력으로 받아, 이를 stringcount로 언패킹합니다. string은 처리할 문자열이고, count는 오른쪽에서 왼쪽으로 이동할 문자의 수입니다.

  2. 문자열 처리 후 반환

    string[-count:] 문자열의 끝에서 count만큼의 문자를 슬라이싱하여 가져옵니다. 예를 들어, string"hello"이고 count3일 경우, "llo"를 가져옵니다.

    string[:-count] 문자열의 시작부터 끝에서 count만큼 앞에 있는 위치까지 의 문자를 슬라이싱하여 가져옵니다. 동일한 예시에서는 "he"를 가져옵니다. 이 두 부분을 합쳐서 "llohe"를 반환합니다.

알아둬야 할 개념

슬라이싱

풀이 2. 슬라이싱과 삼항연산자 활용

def solution(data):
    word, n = data **#1 data 언패킹**
    return word[-n:] + word[:len(word)-n] if n != 0 else word **#2 문자열 처리 후 반환**

단계별 풀이 전략

  1. data 언패킹

    함수는 튜플 data를 입력으로 받아, 이를 wordn으로 언패킹합니다. 여기서 word는 처리할 문자열이고, n은 문자열을 오른쪽으로 이동 시킬 길이입니다.

  2. 문자열 처리

    1. word[-n:] 문자열 word의 끝에서부터 n개의 문자를 가져옵니다. 예를 들어, word"abcd"이고 n1이면, "d"를 가져옵니다.
    2. word[:len(word)-n] 문자열 word의 시작부터 word의 길이에서 n을 뺀 위치까지 문자를 가져옵니다. 같은 예시에서는 "abc"를 가져옵니다.
    3. if n != 0 n0이 아닐 경우에만 로직을 수행합니다. n0이라면 문자열 word를 그대로 반환하여 원본 문자열을 유지합니다.
    4. 최종적으로, word[-n:]word[:len(word)-n]을 연결하여 반환합니다. 위의 예시에서는 "d""abc"를 연결하여 "dabc"를 반환합니다.

알아둬야 할 개념

슬라이싱과 삼항연산자

# 삼항연산자
<참일 때의 값> if <조건> else <거짓일 때의 값>

# 슬라이싱
word[-n:] + word[:len(word)-n] if n != 0 else word

n0이 아니라면 word[-n:] + word[:len(word)-n] 을 실행하고, n0 이라면word 를 실행합니다.