티스토리 뷰

메서드 하나하나 외우기 어려워서 기록 다시 시작한다.

 

 

 

내 풀이

private static String Solution(String num){
        // 내가 푼 방법
        StringBuilder sb = new StringBuilder();
        int len = num.length();

        for(int i=0; i<len; i++){
            if(i >= len-4){
                sb.append(num.charAt(i));
            } else{
                sb.append("*");
            }
        }
        return sb.toString();
}

 

 

방법1 : 정규식 사용하기

.은 하나의 문자를 의미하고 ?=.{4} 4자리 문자 외 앞에 있는 모든 문자를 *로 변환한다. 

return num.replaceAll(".(?=.{4})", "*");

 

방법2 : String -> char -> String 형식 변화하기

이때 ch.toString()과 String.valueOf(ch)의 차이가 무엇인지 궁금했다. 결과적으로 String 타입이 되는 것이 아닌가 생각했다.  결과적으로 ch.toString() ;하면 원하는 값이 나오지 않는다.

왜냐하면 String.valueOf(ch);은 char인 ch를 String 형식으로 바꾸지만, ch.toString()은 Character 형식으로 호출하기 때문이다. ch가 기본형이라면 Character형식으로 박싱되어 toString()메서드가 호출된다.

그러므로 ch.toString()을 실행하면 char -> Character -> String으로 타입이 변환되는 것이다.

char[] ch = num.toCharArray();

for(int i=0; i<ch.length-4; i++){
     ch[i] = '*';
}

return String.valueOf(ch);
//return ch.toString();

 

방법3 : subString() 사용하기

subString(index);는 index부터 끝까지 출력한다.

subString(3, 5); 처럼 코드를 작성해도 된다. index 3부터 5전까지 문자가 출력된다.

        String answer = "";

        for(int i=0; i< num.length()-4; i++)
            answer += "*";
        answer += num.substring(num.length()-4);
        return answer;
반응형
LIST
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함
반응형