-
코딩테스트 연습 / 연습문제 / 핸드폰 번호 가리기 / 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})", "*"); } }
다른 분들 풀이중에 가장 인상 깊었던 풀이는 정규식으로 접근했던 풀이 입니다.
한 줄이라 그런지 굉장히 깔끔합니다.
히스토리
'알고리즘 > 프로그래머스' 카테고리의 다른 글
코딩테스트 고득점 kit / 정렬 / K번째수 / JAVA (1) 2020.04.16 코딩테스트 연습 / 연습문제 / x만큼 간격이 있는 n개의 숫자 / JAVA (1) 2020.04.16 코딩테스트 고득점 kit /탐욕법(Greedy) / 큰 수 만들기 / JAVA (1) 2020.04.15 코딩테스트 고득점 kit / 동적계획법(Dynamic Programming) / 정수 삼각형 / JAVA (0) 2020.04.15 코딩테스트 고득점 kit / 동적계획법(Dynamic Programming) / 타일 장식물 / JAVA (1) 2020.04.15