내 코드
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 타입으로 변화해 리턴해줬다. 간결하고 좋은 코드같다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Java]Lv.1 제일 작은 수 제거하기 (0) | 2023.04.18 |
---|---|
[프로그래머스/Java]Lv.1 바탕화면 정리 (0) | 2023.03.16 |
[프로그래머스/Java]Lv.1 서울에서 김서방 찾기 (0) | 2022.09.29 |
[프로그래머스/Java] LV.1 두 정수 사이의 합 (0) | 2022.09.22 |
[프로그래머스/Java] Lv.1 콜라츠 추측 (1) | 2022.09.22 |