자바 초급문제로 맨땅에 해딩하기

자바 초급문제 8. 핸드폰 번호 가리기

Jungsoomin :) 2020. 3. 29. 23:25

프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/12948)

자바 초급 문제의 핸드폰 번호 가리기 이다.

 

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.제한 조건

  • s는 길이 4 이상, 20이하인 문자열입니다.

 

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
package programmers_핸드폰번호가리기;
 
import java.util.*;
public class Exam {
    public String solution(String phone_number) {
        String answer ="";
        String b = "";
        String a = "";
        char[] c = new char[phone_number.length()-4];
        
        
= phone_number.substring(phone_number.length()-4, phone_number.length());
        
//System.out.println(a);
/*뒷자리수 4자리 확보 
 * 여기에 문자열-4 만큼  *을 넣는 String 값을 만들고 둘을 합침.
 * */
 for(int i=0;i<phone_number.length()-4; i++ ) {
//char 배열에 각각 하나의 *를 넣는다.
     c[i] = '*';
 }
  b = String.copyValueOf(c);
//*확보
 
  answer = b+a;
        return answer;
}
}
cs

 

주의할 코드: String 타입 a에 .substring()메소드를 사용한다. 사용법-> String변수이름.substring(시작점,끝나는점)

컴퓨터는 순번을 0부터 시작하는사실을 알아야한다. 

 

Arrays.copyOfRange(자를배열, 시작점, 마침점+1) 와는 달리 .substring() 메소드는 차이점이있다.

-> 자를문자열.substring(시작점,마침점)   또한 마침점도 자르는 것에 포함한다.

 

그렇게 a에 4자리 숫자를 얻고 char[]타입 c를 선언, 새로운 객체를 만들고 그 초기화값은 phone_number.length-4로 잡는다.

for문을 돌려서 c의 각 인덱스에 *를 넣는다.

 

그 후 String 타입 변수 b에 String.copyValueOf(해당char[]타입 변수 이름); 로 char[]->String 타입으로 변환

 

b+a를 answer에 넣어준다. 합산한 길이는 phone_number와 같아지며 뒷자리 숫자 4자리를 빼고 다 *로 입력값에 따라 산출된다.

 

 

굉장히 일차원 적으로 접근했고 쉽게쉽게 생각하려다가 이렇게 와버린 것같다. 더 좋은 코드로 해결할 수 있다는 생각이 굉장히 많이드는 문제이다. 나중에 한 번 더 접근해봐야겠다. :)