class Solution {
public String solution(String phone_number) {
String str = phone_number.substring(0, phone_number.length() - 4);
StringBuilder sb = new StringBuilder("");
for(int i = 0; i < str.length(); i++){
sb.append("*");
}
String answer = phone_number.replace(str,sb);
return answer;
}
}
20
리뷰 : substring 문자열 자르는 함수, length() 활용하면 뒷자리 제외한 갯수 셀 수 있으므로 원하는만큼 남기고 자를 수 있다. (01012345678 인 경우에는 앞에서부터 7자리까지 잘라도 되지만 010이 아닌 02로 시작하는 경우 불가능하다. 뒤에서부터 잘라야 함)
처음에는 sb 선언때부터 *을 지정했더니 sb.append("*") 할 때 별이 원하는 갯수보다 1개씩 더 찍혀서 for문 조건식을 str.length - 1 로 고친 결과, 채점할 때 하나의 케이스에서 틀렸다고 나왔다.
원인 -> 핸드폰 번호의 최소 범위가 길이 4 이상, 20이하 이기 때문이다.
str 은 "*"로 지정할 문자열의 갯수인데 핸드폰 번호가 4자리인 경우에는 문자열의 수가 0이다. 그럼 for문 조건식이 i < -1 이 되어 문제가 발생한다.
해결 -> sb 선언 시 ""로 두고 *의 갯수를 처음부터 맞춰서 찍는다.
다른 풀이
toCharArray() 사용하면 문자열을 char 배열로 만들어 준다.
String.valueOf() 메소드에 매개변수로 char[]를 넣으면, String으로 곧바로 변환해준다.
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);
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[211217] 최대 공약수 최소 공배수 (유클리드 호제법) (0) | 2021.12.17 |
---|---|
[211217] 평균 구하기 (0) | 2021.12.17 |
[211217] x만큼 간격이 있는 n개의 숫자 (0) | 2021.12.17 |
자바 알고리즘 최적화 팁 & 추천 문제 (0) | 2021.12.15 |
[211214] 짝수와 홀수, 정수 제곱근 판별 (0) | 2021.12.15 |