티스토리 뷰
반응형
Using Language : Java
Using Tool : IntelliJ
- 프로그래머스 문제 소개
< 핸드폰 번호 가리기 >
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *
으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
- s는 길이 4 이상, 20이하인 문자열입니다.
예시
phone_number return
01033334444 *******4444
027778888 *****8888
의사코드
- 핸드폰 번호의 길이를 세어준다.
- 총 길이중 4자리 말고는 모두 *로 정답에 넣어준다 ex : 번호 길이가10이라면, 그 중 6 개는 *로 처리
- *만 들어가 있는 정답에 substring을 이용하여 나머지 전화번호 4자리를 붙여준다.
코드 작성 및 테스트 결과
string이외에 StringBuffer, StringBuilder라는 것들이 있다는 것을 처음 알게되었다.
(리팩토링 중 알게 된것,,)
각 차이점이 크지는 않았지만 잠시 정리해보았다.
공통점 : 셋 다 문자열인 string을 관리하는 클래스
차이점 : string은 불변적, StringBuffer, StringBuilder는 가변적이라는 점.
String은 +나 concat을 사용해서 문자열이 추가된다면 메모리 공간이 자동 변화하는 것이 아니라, 새로운 String 이 생성되어서 새로운 메모리 공간을 만드는 것이다. 이렇게 되면 원래 있던 문자열은 가비지 콜렉터가 제거해주어야 하는데 언제 제거될지 모르는 단점이 생기고 문자열 연산이 많을때 계속 객체를 만드는 오버헤드가 발생 할 수도 있다.
따라서, 문자열 연산이 많은 경우는 가변적인 StringBuffer, StringBuilder를 사용하면 성능이 좋아지고, 두 클래스는 메서드들 사이에 호환도 가능하다고 한다. 하지만, 둘의 차이는 StringBuilder가 싱글쓰레드에서 연산처리가 더 빠르다고한다.
<Solution11.java>
package practice;
public class Solution11 {
/*
<핸드폰 번호 가리기>
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때,
전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수,
solution을 완성해주세요.
제한 조건
s는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number return
01033334444 *******4444
027778888 *****8888
1. 전화번호의 길이를 센다.
2. 뒤에서 네번째 길이를 제외한 나머지는 *로 바꾸어준다.
*/
public String solution(String phone_number) {
StringBuilder answer = new StringBuilder();
int len = phone_number.length();
for(int i=0; i<len-4;i++){
answer.append("*");
}
String last = "";
last+=phone_number.substring(len-4);
return answer+last;
}
}
<Solution11Test.java>
package practice;
import org.junit.Test;
import static org.junit.Assert.*;
public class Solution11Test {
@Test
public void solution() {
Solution11 solution11 = new Solution11();
assertEquals(solution11.solution("01033334444"),"*******4444");
assertEquals(solution11.solution("027778888"),"*****8888");
}
}
반응형
'프로그래머스' 카테고리의 다른 글
10. 프로그래머스_올바른 괄호 (0) | 2019.03.25 |
---|---|
9. 프로그래머스_124나라의 숫자 (0) | 2019.03.25 |
7. 프로그래머스_하샤드수 (0) | 2019.02.26 |
6. 프로그래머스_문자열 내림차순으로 배치하기 (2) | 2019.01.17 |
5. 프로그래머스_행렬의 덧셈 (0) | 2019.01.17 |
댓글