티스토리 뷰

TIL

[코딩테스트] 전화번호 마스킹 처리하기

호호홍얍얍 2022. 5. 14. 14:56

생각보다 쉽게 문제가 풀렸다!

복잡하게 생각하다가, 코드를 짜기 전에 어떻게 할 것인지 한 줄 한 줄 풀어 쓰니 정리가 되어 좋았다.

거기다가 풀면서 더 단순하게 생각하게 되기도 해서, 수정하는 작업도 이뤄졌다.

 

새로 알게 된 스트링버퍼를 사용해서 풀었는데,

회심의 풀이였으나 점수는 너무나 초라한 1점이었다.

스트링빌더를 썼으면 달랐을까? 다른 사람의 코드가 궁금해진다.

public class exam09masking {
    // 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
    // 전화번호가 문자열 phone_number로 주어졌을 때,
    // 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수,
    // solution을 완성해주세요.
    // phone_number는 길이 4 이상, 20이하인 문자열입니다.
    public static void main(String[] args) {
        String phone_number = "01033334444";
        String answer = "";
        int len = phone_number.length();
        StringBuffer temp = new StringBuffer();

        // 1. 문자열의 길이를 구한다.
        // 2. stringbuffer를 생성해준다(문자열을 이어 붙일 것이기 때문에, 생성 시 마다 공간을 차지하는 string은 쓰지 않았다. 그런데 점수 낮게 받음..)
        // 3. 문자열의 길이-4만큼 for문을 돌려 * 를 추가해준다.
        // 4. substring으로 문자열의 길이 -4부터 마지막까지 자른 뒤, stringbuffer에 추가한다.
        // 5. tostring으로 변환하여 변수에 담는다.

        for (int i=0; i < len-4; i++){
            temp.append("*");
        }

        answer = temp.append(phone_number.substring(len-4, len)).toString();

 

 

다른 이의 풀이를 보았다.

toCharArray()를 활용해서, 한 글자 한 글자를 char 배열에 넣어주었다.

이런 좋은 함수가 있다니!

그리고 끝에서 4글자 전까지만 *로 치환해준다.

class Solution {
    public String solution(String phone_number) {
        char[] ch = phone_number.toCharArray();
        for(int i = 0; i < ch.length - 4; i ++){
            ch[i] = '*';
        }
        return String.valueOf(ch);
    }
}

그래도 끝에서 4글자 전까지만을 생각해낸 나에게 박수를 보내주자.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/05   »
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
글 보관함