프로그래머스/문자열 뒤집기_자바
하나의 깨달음: import java.util.*; 이란게 자바의 util을 모두 import하는 뜻이었구나!
문자열 뒤집기는 toString에 대한 이해때문에 오래 걸렸다.
charAt을 사용하여 받은 문자열을 만든 char 배열에 거꾸로 넣은후 이걸 toString에 넣어서 문자열을 만들려고했다.
이렇게하면 문자열 "nosai"이 출력될 것으로 생각했는데, 이게 웬걸! 배열이 출력됐다.
그 이유는 toString()는 배열을 String 클래스로 형변환하는 메서드가 아니라 해시코드를 가져오는 메서드였던 것이다!
System.out.println(Arrays.toString(str)); -->[n, o, s, a, j]
System.out.println(str); -->[C@6d311334
이럴수가 그렇다면 Sting클래스의 내용을 변경 할 수 없는데, 어떻게 이걸 배열로 가져온단 말인가... 라는 생각도 해보고.
배운것 정리를 훑어보니 문자열을 +로 이어붙이는게 보였다.
아 그러면 char를 하나씩 붙여도 가능할까?
answer에 아무것도 들어있지 않기 때문에 거꾸로 하나씩 더해준다면?
결과는 성공적이었다.
근데 문자열에는 문자열을 붙여야 되는거 아니었나? 싶어 여러가지 시도해봤다.
import java.util.*;
class Solution {
public String solution(String my_string) {
String answer = "";
// char[] str = new char[my_string.length()];
//
// for(int i=0;i<my_string.length();i++) {
// str[my_string.length()-(i+1)]=my_string.charAt(i);
// }
//toString()는 배열을 String 클래스로 형변환하는 메서드가 아니라 해시코드를 가져오는 메서드.
//System.out.println(Arrays.toString(str)); -->[n, o, s, a, j]
//System.out.println(str); -->[C@6d311334
for(int i=0;i<my_string.length();i++) {
answer+=my_string.charAt(my_string.length()-(i+1));
}
return answer;
}
}