문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
- phone_number는 길이 4 이상, 20이하인 문자열입니다.
phone_number | return |
"01033334444" | "*******4444" |
"027778888" | "*****8888" |
소스코드
class Solution {
public String solution(String phone_number) {
String answer = "";
int cnt = 0;
int len = phone_number.length();
for(char x : phone_number.toCharArray()){
if(len - 4 == cnt) answer += x;
else{
answer += '*';
cnt++;
}
}
return answer;
}
}
코드 설명
charAt을 쓰면 소스 보기 힘들까 봐 forEach문을 썼는데 cnt 때문에 for문과 별로 다를 바 없다.
cnt는 몇번째 글자가 진행 중인지 알기 위한(for문에서 i의 역할) 변수이고, len은 매개변수로 들어오는 핸드폰 번호의 길이이다.
핸드폰 번호를 char형 배열로 변환한 뒤 forEach문에서 x로 한 글자씩 받아와 조건에 따라 answer에 글자를 붙여준다.
cnt는 한번 진행할 때마다 +1이 되고 이는 현재 진행하고 있는 핸드폰 번호 배열의 포인터가 된다.
cnt가 len-4보다 작을 동안에는 else에 걸려 answer에 *이 더해진다. cnt가 len-4(핸드폰의 뒤에서 네 번째 자리)와 같아지면 cnt는 증가하지 않게 되고 계속 len-4 값으로 고정된다. 그 뒤부터는 answer에 for문이 돌 때마다 x가 추가된다.
코딩테스트 연습 - 핸드폰 번호 가리기
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자
programmers.co.kr
'CodingTest > Programmers' 카테고리의 다른 글
[프로그래머스][Level 1 / JAVA]최대공약수와 최소공배수 (0) | 2022.05.15 |
---|---|
[프로그래머스][Level 1 / JAVA]콜라츠 추측 (0) | 2022.05.14 |
[프로그래머스][Level 1 / JAVA]하샤드 수 (0) | 2022.05.14 |
[프로그래머스][Level 1 / JAVA] 행렬의 덧셈 (0) | 2022.05.14 |
[프로그래머스][Level 1 / JAVA] x만큼 간격이 있는 n개의 숫자 (0) | 2022.05.14 |