Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 1level
- 참조형
- string
- Java
- Math.max
- Integer
- 짝수
- 1lv
- 프로그래머스
- toLowerCase
- Math.min
- SQL
- 문자열
- programmers
- 코딩테스트
- 알고리즘
- Linux
- 1레벨
- StringBuffer
- 코테
- 데이터베이스
- 1단계
- 자바
- substring
- 프로시저
- 디비
- oracle
- 배열
- 오라클
- PARSEINT
Archives
- Today
- Total
웹 프로그래밍
[프로그래머스(Programmers)] 핸드폰 번호 가리기 - JAVA 본문
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해 주세요.
제한 조건
s는 길이 4이상, 20이하인 문자열 입니다.
입출력 예
phone_number | return |
"01033334444" | "*******4444" |
"027778888" | "*****888" |
풀이
1) substring과 replaceAll을 사용하여 해결
class Solution {
public String solution(String phone_number) {
String answer = phone_number.substring(0,phone_number.length()-4).replaceAll(".","*")
+phone_number.substring(phone_number.length()-4);
return answer;
}
}
2) 반복문과 charAt을 사용하여 해결
class Solution {
public String solution(String phone_number) {
int a = phone_number.length();
String answer = "";
for (int i = 0; i < a; i++) {
if(i < a-4) {
answer += "*";
} else {
answer += phone_number.charAt(i);
}
}
return answer;
}
}
1번과 2번 성능을 비교해 보니 1번이 좋았습니다.
문제를 다 풀고 다른 분들 해결 방법을 보던중...
class Solution {
public String solution(String phone_number) {
return phone_number.replaceAll(".(?=.{4})", "*");
}
}
성능이 가장 좋았습니다. 몰랐던 정규 표현식을 배우는 좋은 시간이었네요.bb
'프로그래머스 > level1' 카테고리의 다른 글
[프로그래머스(Programmers) 약수의 합] - JAVA (0) | 2021.10.20 |
---|---|
[프로그래머스(Programmers)] 최대공약수와 최소공배수 - JAVA (0) | 2021.10.18 |
[프로그래머스(Programmers)] 행렬의 덧셈 - JAVA (0) | 2021.10.13 |
[프로그래머스(programmers)] x만큼 간격이 있는 n개의 숫자 - JAVA (0) | 2021.10.12 |
[프로그래머스(programmers)] 직사각형 별 찍기 - JAVA (0) | 2021.10.12 |