Contents

문자열 뒤집기 구현에 대하여(with.Java)

   Sep 18, 2023     2 min read

문자열 뒤집기 구현에 대하여 알아본 글입니다.

코딩 테스트 문제를 풀며, 풀었던 문제에 대한 회고와 다른 풀이 방법을 알아보며, 알아가고자 합니다.

문제에 대해 먼저 알아보겠습니다.

문제

문자열 my_string과 정수 s, e가 매개변수로 주어질 때, my_string에서 인덱스 s부터 인덱스 e까지를 뒤집은 문자열을 return 하는 solution 함수를 작성해 주세요.

입출력 예시
my_stringseresult
“Progra21Sremm3”612“ProgrammerS123”
“Stanley1yelnatS”410“Stanley1yelnatS”

문제에 대한 나의 풀이

class Solution {
    char[] arr;
    public String solution(String my_string, int s, int e) {

        arr = my_string.toCharArray();

        reverse(s,e);
        return new String(arr);
    }

    private void reverse(int startIdx, int endIdx){
        while(startIdx < endIdx){
            char temp = arr[startIdx];
            arr[startIdx++] = arr[endIdx];
            arr[endIdx--] = temp;
        }
    }
}
풀이 설명

char[] arr;: 문자열을 문자 배열로 변환하여 저장하기 위한 멤버 변수 arr을 선언합니다.

public String solution(String my_string, int s, int e) : solution 함수는 세 개의 매개변수를 받습니다. my_string은 원본 문자열, s는 뒤집을 부분의 시작 인덱스, e는 뒤집을 부분의 끝 인덱스를 나타냅니다.

arr = my_string.toCharArray();: 주어진 문자열 my_string을 toCharArray 메서드를 사용하여 문자 배열로 변환하고, 이를 arr에 저장합니다.

reverse(s, e);: reverse 메서드를 호출하여 부분 문자열을 뒤집습니다.

private void reverse(int startIdx, int endIdx) : reverse 메서드는 문자 배열의 일부를 뒤집는 역할을 합니다. startIdx와 endIdx 사이의 문자를 뒤집습니다.

while(startIdx < endIdx) : startIdx가 endIdx보다 작을 때까지 루프를 실행합니다.

char temp = arr[startIdx];: 현재 startIdx 위치의 문자를 temp 변수에 임시로 저장합니다.

arr[startIdx++] = arr[endIdx];: startIdx 위치의 문자를 endIdx 위치의 문자로 바꿉니다. 그리고 startIdx를 증가시켜 다음 문자로 이동합니다.

arr[endIdx–] = temp;: endIdx 위치의 문자를 temp에 저장된 값으로 바꿉니다. 그리고 endIdx를 감소시켜 다음 문자로 이동합니다.

return new String(arr);: 뒤집은 문자열을 다시 문자열로 변환하고 반환합니다.

오늘도 좋은 하루 되세요!