-
[자바(JAVA)] 문자열 뒤집기, StringBuilder, setCharAt(index, newChar)프로그래머스/자바(JAVA) 2023. 8. 16. 19:32728x90
https://school.programmers.co.kr/learn/courses/30/lessons/181905
이 문제는 매개변수로 입력받은 String 문자열중 특정 인덱스 구간만 뒤집어서 출력하는것이다.
먼저 문자열의 변경이 필요하기 때문에 나는 변수로 StringBuilder를 사용하기로 했고, 문자열에 내제된 메서드중에 이 문제처럼 특정 인덱스 구간만 변경할 수 있는지 찾아보았다.
그리고 아래와 같이 코드를 작성했다.
✅ 내 풀이
class Solution { public String solution(String my_string, int s, int e) { StringBuilder answer = new StringBuilder(my_string); for(int i=s, j=e ; i<j; i++, j--) { char temp = answer.charAt(i); answer.setCharAt(i, answer.charAt(j)); answer.setCharAt(j, temp); } return answer.toString(); } }
📄 setCharAt
setCharAt은
StringBuilder 또는 StringBuffer 클래스에서 사용되는 메서드로, 지정된 인덱스에 해당하는 문자를 다른 문자로 변경하는 역할을 합니다. 이 메서드를 사용하여 문자열 내의 특정 위치에 있는 문자를 수정할 수 있습니다.👉 형태
stringBuilder.setCharAt(index, newChar);
- stringBuilder: StringBuilder나 StringBuffer 객체입니다.
- index: 변경하려는 문자의 인덱스입니다.
- newChar: 변경하려는 문자로 대체할 문자입니다.
reverse와 관련된 함수를 찾아보다가 setCharAt()을 발견했다.
그래서 for문을 통해 각 인덱스의 자리를 바꿔주는 방식으로 문제를 풀었다.
✅ 다른 풀이1
class Solution { public String solution(String my_string, int s, int e) { StringBuilder answer = new StringBuilder(my_string.substring(s, e + 1)); answer.reverse(); return my_string.substring(0, s) + answer + my_string.substring(e + 1); } }
내가 원했던 reverse를 사용했다.
이런식으로 문자열을 끊어서 계산해도 된다!!
✅ 다른 풀이2
class Solution { public String solution(String myString, int s, int e) { return myString.substring(0, s) + new StringBuilder(myString.substring(s, e + 1)) .reverse() .toString() + myString.substring(e + 1); } }
이 방법을 생각해보지 않은건 아니다.
뒤집어야하는 인덱스의 전까지의 값 + 변경한 필요한 문자열 + 나머지 문자열
이렇게도 가능하며, 스트림을 사용하면 나름 간단하게 표현할 수 있다.
728x90'프로그래머스 > 자바(JAVA)' 카테고리의 다른 글
[자바(JAVA)] 문자열로 변환/ valueOf()와 perse()의 공통점과 차이점 (0) 2023.08.21 [자바(JAVA)] 정수 내림차순으로 배치하기. PriorityQueue<Long> (0) 2023.08.18 [자바(JAVA)] 수열과 구간 쿼리 3 / ArrayList<>(), Collections.swap() (0) 2023.08.15 [자바(JAVA)] 피자 나눠먹기(1) / Math.ceil() 로 올림처리 하기 (0) 2023.08.03 [자바(JAVA)] 홀짝에 따라 다른 값 반환하기 / IntStream.rangeClosed (0) 2023.07.02