[문제설명]
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
[제한사항]
phone_number는 길이 4 이상, 20이하인 문자열입니다.
[입출력 예]
class Solution {
public String solution(String phone_number) {
String star = phone_number.substring(0, phone_number.length()-4); // *로 변경할 문자
String noStar = phone_number.substring(phone_number.length()-4, phone_number.length()); // *로 변경 X
String answer = star;
for(int i=0; i<star.length(); i++) { // *로 변경할 문자
char c = star.charAt(i);
answer = answer.replace(c, '*'); // 모두 *로 변경
}
answer = answer + noStar;
return answer;
}
}
쉬울 줄 알았는데, 생각보다 푸는데 오래 걸린 문제
아직 문자열 제거나 추출 메소드를 사용하는게 익숙치 않아 연습을 더 많이 해야할 것 같다.
내가 작성한 코드 말고 더 좋은 코드가 있을 것 같아 찾아봐야겠다
다른 사람 코드들 참고해서 좀 더 짧고 쉽게 수정해본 코드이다.
굳이 star, noStar로 따로 변수를 생성할 필요 없이 phone_number 전체를 도는 for문 안에서
뒤에 4자리와 그 외를if-else 문으로 구분해주면 훨씬 편하다.열공!!..
class Solution {
public String solution(String phone_number) {
String answer = "";
for(int i=0; i<phone_number.length(); i++) {
if(i < phone_number.length()-4) { // 4자리수 전까지
answer += "*"; // *로 변경
}
else { // 그 외
answer += phone_number.charAt(i);
}
}
return answer;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
Programmers / Level 1 / 제일 작은 수 제거하기 (0) | 2022.06.20 |
---|---|
Programmers / Level 1 / 하샤드 수 (0) | 2022.05.29 |
Programmers / Level 1 / 평균 구하기 (0) | 2022.05.29 |
Programmers / Level 1 / x만큼 간격이 있는 n개의 숫자 (0) | 2022.05.29 |
Programmers / Level 1 / 직사각형 별찍기 (0) | 2022.05.29 |