문제 설명
문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 1,000
입출력 예
입출력 설명
입출력 예 #1
- my_string이 "jaron"이므로 거꾸로 뒤집은 "noraj"를 return합니다.
입출력 예 #2
- my_string이 "bread"이므로 거꾸로 뒤집은 "daerb"를 return합니다.
코드
class Solution {
public String solution(String my_string) {
String answer = "";
char[] string_array = my_string.toCharArray(); // String을 문자형배열로 변환
char[] temp = new char[string_array.length]; // 뒤집힌 문자를 만들어줄 문자형배열 생성
for(int i=0; i<string_array.length; i++) { // 반복문을 통해
temp[i] = string_array[string_array.length-(i+1)]; // 문자 뒤집기
}
answer = new String(temp); // 문자형배열을 문자열로 변환
return answer;
}
}
풀이
toCharArray()를 이용해 문자열을 문자형배열로 변환해준다. 그리고 뒤집힌 문자를 저장할 temp라는 문자형배열을 생성해준다. string_array의 길이만큼 반복하여 string_array의 마지막번째 자리부터 0번째 자리의 문자들을 temp의 0번째자리부터 마지막번째 자리까지 하나씩 넣어준다. 그 후 문자열인 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();
}
}
StringBuilder를 이용해 버퍼에 my_string을 추가하고 reverse()를 통해 문자를 뒤집은 후, 문자열로 변환하여 리턴한다.
(같은 방법으로 StringBuffer를 이용해서 코드를 작성하는 것도 가능하다.)
class Solution {
public String solution(String my_string) {
String answer = "";
for(int i=my_string.length()-1; i>=0; i--){
answer+=my_string.charAt(i);
}
return answer;
}
}
my_string 자체를 문자형배열로 변환하는 것이 아닌, 각각의 문자로 변환하여 answer에 추가해준다.
정리
StringBuilder() : 기존의 데이터에 더하는 방식을 사용하기 때문에 속도도 빠르며 상대적으로 부하가 적음. (문자열을 더하는 상황에서 사용하면 좋음)
차이점 | 공통점 | |
Buffer | - 멀티스레드 환경에서 사용하기 좋음 - 동기화 지원 |
기존 버퍼의 크기를 늘려주며 유연하게 동작 |
Builder | - 단일스레드 환경에서 사용하기 좋음 |
(Builder도 동기화가 사용이 가능하지만 동기화 처리로 인해 성능이 낮아짐)
'Coding Test' 카테고리의 다른 글
230922 점의 위치 구하기 - Level 0 (0) | 2023.09.22 |
---|---|
230921 가위 바위 보 - Level 0 (0) | 2023.09.21 |
230920 배열 뒤집기 - Level 0 (0) | 2023.09.20 |
230920 배열 두 배 만들기 - Level 0 (0) | 2023.09.20 |
230919 몫 구하기 - Level 0 (0) | 2023.09.19 |