일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MYSQL
- 프로그래머스
- 전이
- 방사성 동위원소 치료
- 저요오드식
- 객체
- 백준알고리즘
- 수술
- 갑상선암
- android auto
- 카페
- 안드로이드
- Compose
- 방사성동위원소치료
- 입원
- 림프절전이
- 맛집
- Android Compose
- 경력 개발자
- firebase
- 동위원소치료
- java
- 폐CT
- Jetpack Compose
- 정렬 알고리즘
- 갑상선암용인세브란스
- 임파선전이
- Android
- leetcode
- 알고리즘
- Today
- Total
새우버거의 개발 블로그
[JAVA] 프로그래머스 Lv.1 : 핸드폰 번호 가리기 본문
예제:
phone_number | return |
"01033334444" | "*******4444" |
"027778888" | "*****8888" |
제한 조건:
- s는 길이 4 이상, 20이하인 문자열입니다.
Solution #1
class Solution {
public String solution(String phone_number) {
StringBuilder answer = new StringBuilder();
for (int i = 0; i < phone_number.length(); i++) {
if (i >= phone_number.length() - 4) answer.append(phone_number.charAt(i));
else answer.append("*");
}
return answer.toString();
}
}
Result #1
💡 for 반복문을 이용해 문자열을 append()하는 방법으로 간단하게 풀었다.
Solution #2
class Solution {
public String solution(String phone_number) {
return phone_number.replaceAll(".(?=.{4})", "*");
}
}
Result #2
💡 정규표현식과 replaceAll() 함수를 이용하여 코드를 간결하게 수정하였다. 실행 시간이 더 증가한 것을 확인할 수 있는데 이는 replaceAll()의 시간복잡도가 O(n)이기 때문이다. 정규표현식을 해석해보자.
정규표현식
. : 개행 문자를 제외한 모든 단일 문자와 대응된다.
예를 들어, /.n/는 "nay, an apple is on the tree"에서 'an'과 'on'에 대응되지만, 'nay' 에는 대응되지 않는다.
x(?=y) : 오직 'y'가 뒤따라오는 'x'에만 대응됩니다. 이것은 lookahead 라고 불립니다.
{n} : 앞 표현식이 n번 나타나는 부분에 대응됩니다. n은 반드시 양의 정수여야 합니다.
예를 들어, /a{2}/는 "cand,"의 'a'에는 대응되지 않지만, "caandy,"의 모든 a 와, "caaandy."의 첫 두 a 에는 대응됩니다.
.(?=.{4})
x == .
모든 단일 문자
y == .{4}
모든 단일 문자가 4번 나타나는 부분
∴ 오직 (모든 문자가 4번 나타나는 부분)가 뒤따라 오는 (모든 단일 문자)
=> 뒷 4자리를 제외한 모든 단일 문자
More Algorithm!
👇👇
github.com/ggujangi/ggu.programmers
ggujangi/ggu.programmers
프로그래머스 알고리즘, JAVA. Contribute to ggujangi/ggu.programmers development by creating an account on GitHub.
github.com
출처 : 프로그래머스
'프로그래머스 - JAVA > Level 1' 카테고리의 다른 글
[JAVA] 프로그래머스 Lv.1 : 평균 구하기 (0) | 2021.04.01 |
---|---|
[JAVA] 프로그래머스 Lv.1 : 하샤드 수 (0) | 2021.04.01 |
[JAVA] 프로그래머스 Lv.1 : 행렬의 덧셈 (0) | 2021.04.01 |
[JAVA] 프로그래머스 Lv.1 : x만큼 간격이 있는 n개의 숫자 (0) | 2021.04.01 |
[JAVA] 프로그래머스 Lv.1 : 소수 만들기 (0) | 2021.03.31 |