코딩테스트연습/프로그래머스

[프로그래머스 - JAVA] 핸드폰 번호 가리기

:)jun 2021. 11. 19. 22:32

https://programmers.co.kr/learn/courses/30/lessons/12948

 

코딩테스트 연습 - 핸드폰 번호 가리기

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자

programmers.co.kr

//테스트 코드

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

class Quiz1_핸드폰번호가리기Test {
	Quiz1_핸드폰번호가리기 q;

	@BeforeEach
	void setUp() throws Exception {
		q = new Quiz1_핸드폰번호가리기();
	}

	@Test
	void TestFourDigit() {
		assertEquals("1234", q.solution(new String("1234")));
	}
	@Test
	void TestElevenDigit() {
		assertEquals("*******8901", q.solution(new String("12345678901")));
	}
	@Test
	void TestNineDigit() {
		assertEquals("*****6789", q.solution(new String("123456789")));
	}
}

// 4이상 20이하라서 4를 추가로 고려해줬다.

//프로덕션코드

public class Quiz1_핸드폰번호가리기 {
    public String solution(String phone_number) {
        if(phone_number.length()==4) {
        	return phone_number;
        }
        String s = stringOfStar(phone_number);
        String answer = s +phone_number.substring(phone_number.length()-4);
        return answer;	
    }
    private String stringOfStar(String phone_number) {
    	String sum ="";
    	for(int i=0; i<phone_number.length()-4; i++) {
    		sum+="*";
    	}
    	return sum;
    }
}

//성공! 이제 처음 본 사람도 쉽게 이해할 수 있게 리팩토링해보자.

public class Quiz1_핸드폰번호가리기 {
    public String solution(String phone_number) {
        if(whenFourDigit(phone_number)) {
        	return phone_number;
        }
        return stringOfStar(phone_number) + stringLastFourDigit(phone_number);   	
    }
    
	private String stringLastFourDigit(String phone_number) {
		return phone_number.substring(phone_number.length()-4);
	}
	
	private boolean whenFourDigit(String phone_number) {
		return phone_number.length()==4;
	}
	
    private String stringOfStar(String phone_number) {
    	String sum ="";
    	for(int i=0; i<phone_number.length()-4; i++) {
    		sum+="*";
    	}
    	return sum;
    }
}