Programmers | 코딩테스트 입문 - 문자열 뒤집기

2022. 12. 22. 15:05공부/Programmers

프로그래머스 Lv.0 문자열 뒤집기

 

문제 설명

문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.


제한사항
  • 1 ≤ my_string의 길이 ≤ 1,000

 

JAVA

class Solution {
    public String solution(String my_string) {
        String answer = "";
        String[] stringArr = my_string.split("");
        for(int i=(stringArr.length-1); i >= 0; i--){
            answer += stringArr[i];
        }
        return answer;
    }
}

 

다른 사람 풀이

import java.util.*;

class Solution {
    public String solution(String my_string) {
        StringBuilder sb = new StringBuilder();
        sb.append(my_string);
        sb.reverse();

        return sb.toString();
    }
}

문자열을 다루는 것들에는 String, StringBuffer, StringBuilder가 있다.

  • String은 할당된 메모리 공간이 변하지 않는다.

 

  • StringBuffer와 StringBuilder는 할당된 메모리 공간이 문자열 연산에 따라 변한다.

        => 이 부분에서 문자열 연산이 일어날 때마다 새로운 객체를 생성하는 String보다 속도가 빠르다.

 

  • StringBuffer는 동기화가 보장된다. 따라서 멀티쓰레드에서 동시화가 진행될 때, 한 쓰레드에서 작업이 완료된 후에 다음 쓰레드로 넘어갈 수 있다. 

        => 동기화가 보장되기 때문에, StringBuilder가 StringBuffer보다 속도가 빠르다.

*String vs StringBuffer vs StringBuilder 속도 비교 (동기화 보장X)


    String < String Buffer < StringBuilder

코테할 때 StringBuilder 자주 써먹어야겠다😎

 

Python3

def solution(my_string):
    my_string = list(my_string)
    my_string.reverse();
    my_string = ''.join(my_string)
    return ''.join(list(my_string.reverse()))

 

다른 사람 풀이

def solution(my_string):
    return ''.join(list(reversed(my_string)))

 

풀이 방식은 비슷하지만, 사용한 메소드가 달랐다.

reverse는 메소드로,  반환값(return)이 없고, 해당 객체의 데이터를 변환시킨다.

reversed는 내장함수로, 반환값(return)이 있다.