프로그래머스/level1
[Java][프로그래머스] 핸드폰 번호 가리기
wave_m
2020. 9. 17. 20:51
728x90
문제 설명 :
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건 :
- s는 길이 4 이상, 20이하인 문자열입니다.
입출력 예 :
phone_number | return |
"01033334444" | "*******4444" |
"027778888" | "*****8888" |
class Solution {
public String solution(String phone_number) {
String answer = "";
String[] a = phone_number.split("");
for(int i= 0; i<a.length; i++){
if(i < (a.length-4)) {
answer += "*";
} else {
answer += a[i];
}
}
return answer;
}
}
알고리즘 풀이 :
1. 핸드폰 번호를 가린 answer 변수를 String 으로 객체 생성
2. split을 사용하여 phone_number을 하나씩 잘라서 a라는 문자열 배열에 저장
3. 총 answer의 길이가 a.length와 동일하기에 for문을 사용
1) i < a.length-4 일 때
- 맨 뒷 자리 4자리수만 빼고 가리면 되기에 "*"을 answer에 추가
2) i < a.length-4 가 아닐 때
- 맨 뒷 자리 4자리 수는 가리면 안 되기에 a[i]에 해당하는 수를 answer에 추가
3. answer를 return을 사용하여 반환
[ python 풀이 ]
def blind(a) :
answer = ""
for i in range(0, len(a)) :
if i < len(a)-4 :
answer += "*"
else :
answer += a[i]
return answer
print(blind("01033334444"))
- 자바를 공부하던 중 string과 stringbuilder, stringbuffer의 차이점을 알고 stringbuilder 구성한 풀이(2020.12.22 추가)
import java.util.*;
class Main {
public static void main(String[] args) {
String phone = "01011112222";
StringBuilder result = new StringBuilder();
for(int i=0; i< phone.length(); i++){
if(i < phone.length() - 4){
result.append(phone.charAt(i));
} else {
result.append("*");
}
}
System.out.println(result);
}
}
728x90