https://programmers.co.kr/learn/courses/30/lessons/12948
//테스트 코드
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;
}
}
'코딩테스트연습 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 - JAVA] x만큼 간격이 있는 n개의 숫자 (0) | 2021.11.21 |
---|---|
[프로그래머스 - JAVA] 행렬의 덧셈 (0) | 2021.11.20 |
[프로그래머스 - JAVA] 하샤드 수 (0) | 2021.11.18 |
[프로그래머스 - JAVA] 콜라츠 추측 (0) | 2021.11.16 |
[프로그래머스 - JAVA] 2018 KAKAO BLIND RECRUITMENT[1차] 다트 게임 (0) | 2021.10.30 |