본문 바로가기
코딩테스트/프로그래머스

[프로그래머스/Java]Lv.1 핸드폰 번호 가리기

by ⓞㅖ롱 2022. 10. 17.

 

내 코드

class Solution {
    public String solution(String phone_number) {
        String answer = "";
        StringBuilder sb = new StringBuilder(phone_number);
        //전체에서 4자리를 제외한 만큼 * 처리하기 위해 길이저장
        int leng = phone_number.length()-4;
        StringBuilder star = new StringBuilder();
        
        //leng 갯수 만큼 ***을 만들어준다
        for(int i=0; i<leng; i++){
            star.append("*");
        }
        
        //끝번호 4자리를 제외한 숫자를 *로 대체
        sb = sb.replace(0, leng, star.toString());
        
        return sb.toString();
    }
}

처음 헤맸던 부분은 replace() 해주니까 01011112222 가 *2222 이렇게 변해버렸다.

replace()는 문자마다 바꿔주는 것이 아니라 문자열을 통째로 대체하기 때문에 for문을 돌려 대체 문자열을 만드는 작업이 필요했다.

 

다른사람 코드

class Solution {
  public String solution(String phone_number) {
     char[] ch = phone_number.toCharArray();
     for(int i = 0; i < ch.length - 4; i ++){
         ch[i] = '*';
     }
     return String.valueOf(ch);
  }
}

깔끔한 코드

char타입 배열로 문자열을 배열로 바꿔준 후 for문을 돌려 '*' 로 대체 해줬다. valueOf()를 통해 String 타입으로 변화해 리턴해줬다. 간결하고 좋은 코드같다.