Coding Test/Java Coding Test

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

nam_ji 2024. 1. 22. 09:48

핸드폰 번호 가리기

문제

  • 문자열 phone_number가 매개변수로 주어집니다.
  • phone_number의 뒤 4자리를 제외한 나머지를 *로 바꿔서 출력하는 문제입니다.


테스트 (이클립스)

  • 우선 문자열 phone_number의 값을 char 배열에 하나씩 담도록 해줍니다.
  • for문을 이용하여 0부터 phone_number의 크기의 -4까지만 순회하도록 하고
  • 그 안에서 char 배열로 바꾼 값의 원소들을 *로 바꾸도록 합니다.
  • 그리고 char 배열을 다시 String 타입으로 바꿔주면 됩니다.
  • 밑에 다른 사람 풀이 중에서 괜찮은 풀이법이 있어서 가져와 봤습니다.
  • for문을 이용하여 phone_number의 -4까지 순회하도록 하고
  • answer의 값을 for문의 순회하는 크기만큼 *을 담도록 합니다.
  • 그럼 answer에는 ********이 담기게 되고 그 값에 substring을 이용하여 phone_number의 -4번째부터 끝까지의 값을 더해주면 문제를 해결할 수 있습니다.
package com.namji.codingtest.level0;

public class HideYourCellPhoneNumber {
	public static void main(String[] args) {
		/**
		 * 문자열 phone_number가 매개변수로 주어집니다.
		 * phone_number의 마지막 4자리를 제외하고 전부 *처리하여 출력하는 문제입니다.
		 * "01033334444" > "*******4444" / "027778888" > "*****8888"
		 */
		String phone_number = "01033334444";
		char[] c = phone_number.toCharArray();
		for (int i = 0; i < c.length - 4; i++) {
			c[i] = '*';
		}
		System.out.println(String.valueOf(c));
		
//		String answer = "";
//		for (int i = 0; i < phone_number.length() - 4; i++) {
//			answer += "*";
//		}
//		answer += phone_number.substring(phone_number.length() - 4);
//		System.out.println(answer);
//		
//		System.out.println(phone_number.replaceAll(".(?=.{4})", "*"));
	}
}


프로그래머스 코드

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