티스토리 뷰
728x90
🌌프로그래머스 핸드폰 번호 가리기 - 자바(java)
📚 문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
👨🏻💻 제한 조건
phone_number는 길이 4 이상, 20이하인 문자열입니다.
📖 예시
💻 입력 /출력
phone_number return
"01033334444" "*******4444"
"027778888" "*****8888"
💻 작성 코드
class Solution {
public String solution(String phone_number) {
StringBuilder answer = new StringBuilder(phone_number);
for(int i=0; i < phone_number.length()-4; i++){
answer.setCharAt(i, '*');
}
return answer.toString();
}
}
🗝️ 해석
- length() -4 -> 문자열 길이 -4 까지는 숫자를 더하고,
- 그 뒤로는 *을 더한다.
🎉 배운점
1. Stringbuilder 사용
2. String 객체와 String 객체를 더하는 행위는 메모리 할당과 연산이 많아 질 경우 성능 감소.
String은 내부의 문자열을 수정할 수 없다.
예를 들어 String 객체를 +연산할 경우
String name = "ABC";
name += "people";
의 경우 한 개의 String 객체가 사용된 것이 아닌,
"ABC" 에 "people" 가 추가된 "ABCpeople" 라는 새로운 `String 객체`가 생성된다.
그리고 str 변수는 새롭게 생성된 String 객체를 참조하게 된다.
3. replace 와 setCharAt 성능 비교
setCharAt()은 시간 복잡도가 O(1)
replace()는 O(2N)
이유: replace()의 내장arraycopy()가 문자열을 덮어쓰는 불필요한 작업을 하게 되며 따라서 오버헤드가 발생한다.
따라서 시간이 오래 걸림
https://hyeonu1258.github.io/2018/03/10/StringBuilder_setCharAt_replace/
- 위 블로그에서 발췌했습니다.
4. length
- arrays(int[], double[], String[])
- length는 배열의 길이를 알고자 할때 사용된다.
5. length()
- length()는 문자열의 길이를 알고자 할때 사용된다.
728x90
'💻 개발 > 알고리즘' 카테고리의 다른 글
콜라츠 추측 함수로 쪼개어 풀어보기 (0) | 2022.10.01 |
---|---|
[프로그래머스 Level1] k번째 수 구하기 - 자바(java) | 정렬 (0) | 2022.06.08 |
[프로그래머스 Level2] 전화번호 목록 - 자바(java) | 해쉬 사용 (0) | 2022.06.05 |
[프로그래머스 Level1] 완주하지 못한 선수 - 자바(Java) | 해시 사용하기 (0) | 2022.06.04 |
[프로그래머스 Level1] 직사각형 별찍기-자바(Java) (0) | 2022.06.04 |
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday