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

2024. 10. 14. 16:03·여러가지/알고리즘 & 자료구조

문제 설명

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

제한 조건

phone_number는 길이 4 이상, 20이하인 문자열입니다.

입출력 예

phone_number return
"01033334444" "***4444"
"027778888" "*****8888"

public class Solution {
    public String solution(String phone_number) {
        // phone_number 배열의 길이를 구한다.
        String[] strArr = phone_number.split("");
        int strArrSize = strArr.length;

        char[] startCharArr = new char[strArrSize - 4];
        for(int i = 0; i < startCharArr.length; i++){
            startCharArr[i] = '*';
        }

        char[] endCharArr = new char[4];
        for(int i = strArrSize-4,j= 0; i < strArrSize; i++, j++){
            endCharArr[j] = phone_number.charAt(i);
        }
        StringBuilder sb = new StringBuilder();
        sb.append(startCharArr);
        sb.append(endCharArr);
        String answer = sb.toString();
        return answer;
    }
}

코드 분석 및 개선

기존 코드의 문제점:

  • 불필요한 배열 생성: startCharArr과 endCharArr 배열을 생성하는 과정이 불필요합니다.
  • 반복문 사용: 두 개의 반복문을 사용하여 문자를 복사하는 것이 비효율적입니다.

개선된 코드:

public class Solution {
    public String solution(String phone_number) {
        int length = phone_number.length();
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < length - 4; i++) {
            sb.append("*");
        }

        sb.append(phone_number.substring(length - 4));
        return sb.toString();
    }
}

 

개선 사항:

  • 단일 반복문 사용: for 루프를 하나만 사용하여 문자를 복사합니다.
  • StringBuilder.append() 활용: StringBuilder의 append() 메서드를 사용하여 문자를 효율적으로 추가합니다.
  • substring() 활용: 마지막 4자리를 추출하는 데 substring() 메서드를 사용하여 코드를 간결하게 합니다.

시간 복잡도 분석:

  • 기존 코드: O(n) (n은 문자열 길이)
  • 개선된 코드: O(n)

결론:

개선된 코드는 불필요한 배열 생성과 반복문을 줄여 시간 복잡도를 유지하면서 코드의 가독성과 효율성을 향상시켰습니다.

저작자표시 (새창열림)

'여러가지 > 알고리즘 & 자료구조' 카테고리의 다른 글

[프로그래머스] 가장 가까운 같은 글자  (0) 2024.10.16
[프로그래머스] 시저암호  (0) 2024.10.16
[프로그래머스] 음양 더하기  (1) 2024.10.14
[프로그래머스] 콜라츠 추측  (0) 2024.10.14
[프로그래머스] 두 정수 사이의 합  (2) 2024.10.14
'여러가지/알고리즘 & 자료구조' 카테고리의 다른 글
  • [프로그래머스] 가장 가까운 같은 글자
  • [프로그래머스] 시저암호
  • [프로그래머스] 음양 더하기
  • [프로그래머스] 콜라츠 추측
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (284)
      • 여러가지 (108)
        • 알고리즘 & 자료구조 (72)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (2)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (38)
        • 파이썬 (30)
        • 자바 (3)
        • 스프링부트 (5)
      • 운영체제 (0)
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (2)
        • 도커 (2)
        • AWS (0)
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (0)
        • 정보처리기사 (0)
      • 재태크 (5)
        • 암호화폐 (5)
        • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    항해99
    취업리부트
    완전탐색
    docker
    reactor
    자바
    spring
    DP
    ecs
    백준
    Docker-compose
    java
    WebFlux
    시험
    OOP
    FastAPI
    Spring WebFlux
    celery
    AWS
    Spring Boot
    그리디
    Python
    mybatis
    Redis
    RDS
    파이썬
    EC2
    SAA
    #개발자포트폴리오 #개발자이력서 #개발자취업 #개발자취준 #코딩테스트 #항해99 #취리코 #취업리부트코스
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
[프로그래머스] 핸드폰 번호 가리기
상단으로

티스토리툴바