본문 바로가기

알고리즘/문제 풀이

Java_Quiz_06_개인정보 보호 매소드 만들기

1.문제 설명

(1) 사용자의 이름, 주민등록번호, 전화번호 그리고 이 개인 정보에서 보여줄 글자의 수가 주어졌을 때, 해당 글자까지만 보이고 나머지는 *로 대체하여 반환하는 함수를 구현하라  

      ex) 나코딩, 990130-1234567,010-1234-5678이 주어졌을 때 각각 1, 8, 9개의 글자만 보이고 나머지는 *로 대체하여

           출력하시오.

// 주어진 코드
// getHiddenData를 구현해야함.

String name = "나코딩"; // 이름
String id = "990130-1234567"; // 주민등록번호
String phone = "010-1234-5678"; // 전화번호

System.out.println("이름: " + getHiddenData(name, 1));
System.out.println("주민등록번호: " + getHiddenData(id, 8));
System.out.println("전화번호: " + getHiddenData(phone, 9));

2. 내가 만든 코드

public static String getHiddenData(String input, int number) {
	//totalNum은 input의 총 길이 
    int totalNum = input.length();
    
    //partOfInput은 표시해야할 값의 길이 
    String partOfInput = input.substring(0,number);
    
    //partOfInput을 문자 별로 쪼개서 배열에 집어 넣음 
    String[] p = partOfInput.split("");
    
    // 총 길이만한 배열도 만듦
    String[] s = new String [totalNum];

	//배열s안에 표시해야할 값 넣고 나머지는 *로 채움
    for (int i = 0; i < partOfInput.length(); i++) {
        s[i] = p[i];
    }
    for (int j = number; j < input.length(); j++) {
        s[j] = "*";
    }
    
    // 배열을 다시 문자열로 바꾸어서 반환
    String a = Arrays.toString(s);

    return a;

}

3. 틀린 점 

//<반환 내용>

이름: [나, *, *]
주민등록번호: [9, 9, 0, 1, 3, 0, -, 1, *, *, *, *, *, *]
전화번호: [0, 1, 0, -, 1, 2, 3, 4, -, *, *, *, *]

(1) String 또한 +를 이용해 문자열에 문자를 추가할 수 있음을 알지 못했다. 

String s = "apple의 시작 문자는 "
s += "a" 

//s를 출력하면 "apple의 시작 문자는 a"가 된다.

(2)Arrays.toString(배열 이름)을 쓰게 되면 배열을 문자열로 바꿀 수 있으나 문자열의 형태는 [ ] 속에 배열의 원소가 나열된 형태로 저장된다. (이것은 문제가 원하는 출력 값이 아니다.)

ex) 위의 코드에서 a에 "나**"이 들어간 것이 아니라 a = "[나,*,*]"이 들어간 것이 된다.

4. 해답 코드

public static String getHiddenData(String data, int index) {

	// 표시해야할 부분까지 잘라서 문자열에 넣기 
    // 나코딩 -> 나
    String hiddenData = data.substring(0,index);

	//자른 부분부터 원래 문자열 끝까지는 *로 채우기
    for (int i = index; i < data.length(); i++) {
        hiddenData +="*";

    }

 

그냥 string에 문자 +하는 것 이용해주면 된다. 

'알고리즘 > 문제 풀이' 카테고리의 다른 글

[백준 11022번]  (0) 2023.02.08
[백준 11021번]  (0) 2023.02.08
JAVA QUIZ 08  (0) 2023.02.02
[JAVA QUIZ] 햄버거 주문서 만들기  (0) 2023.01.29
백준 15552 문제(빠른 A+B) Code review  (0) 2023.01.25