알고리즘/프로그래머스
코딩테스트 연습 / 연습문제 / 핸드폰 번호 가리기 / JAVA
외계공룡
2020. 4. 16. 11:00
풀이방법 1
import java.util.Arrays;
class Solution {
public String solution(String phone_number) {
String answer = "";
char[] str = phone_number.toCharArray();
Arrays.fill(str,'*');
for(int i=phone_number.length()-1; i>=phone_number.length()-4; i--){
str[i] = phone_number.charAt(i);
}
answer = String.valueOf(str);
return answer;
}
}
toCharArray 메소드로 전화번호를 전부 '*'로 채운 배열을 만든다음 phone_number의 뒷자리 4개를 바꿔주는 방식입니다. 그러나 곰곰이 생각해보면 toCharArray를 하고 전부 '*'로 채울 필요 없이 나머지 부분만 '*'로 채워줬어도 하는 아쉬움이 남습니다.
풀이방법 2
class Solution {
public String solution(String phone_number) {
String answer = "";
char[] str = phone_number.toCharArray();
for(int i=0; i<phone_number.length()-4; i++){
str[i] = '*';
}
answer = String.valueOf(str);
return answer;
}
}
위의 식을 좀 더 다듬어서 phone_number.length - 4 이전 까지만 '*'로 채우도록 실행시켰습니다.
좀 더 효율성을 고려해본 코드입니다.
저 같은 경우에는 처음 이식을 짤 때 for문을 두개로 나눠서 phone_number.length - 4 까지 *로 채우는 코드랑 phone_number.length - 4부터 끝까지 charAt()으로 변경해주는 코드로 작성했는데 생각해보니 toCharArray()메소드가 이미 String객체를 형태소 단위로 잘라서 넣어주었기 때문에 charAt()메소드를 쓰지 않아도 된다는 점을 간과했습니다. 아직 라이브러리 사용법이 미숙하다는 점을 깨달았습니다. 공부가 좀 더 필요할 것 같습니다.
풀이방법 3
class Solution {
public String solution(String phone_number) {
return phone_number.replaceAll(".(?=.{4})", "*");
}
}
다른 분들 풀이중에 가장 인상 깊었던 풀이는 정규식으로 접근했던 풀이 입니다.
한 줄이라 그런지 굉장히 깔끔합니다.
히스토리
chucoding/algorithm
알고리즘 문제풀이 사이트 도전~!! . Contribute to chucoding/algorithm development by creating an account on GitHub.
github.com