알고리즘/Java

[JAVA] 프로그래머스 핸드폰번호 가리기, 부족한 금액 계산하기

유리코딩 2021. 11. 9. 11:16
반응형

알고리즘

JAVA 프로그래머스 핸드폰번호 가리기, 부족한 금액 계산하기


 

핸드폰번호 가리기

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/12948

 

코딩테스트 연습 - 핸드폰 번호 가리기

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

programmers.co.kr

 

2. 풀이

  • 뒤에서 4자리 수를 제외한 나머지 수자들을 *로 변환한뒤 제외했던 숫자들을 뒤에 붙여준다 
class Solution {
    public String solution(String phone_number) {
        String answer = "";
        int v = 4;
        //뒤에 4자리 수를 제외한 폰넘버 개수
        int star = phone_number.length() - v;
        for(int i=0; i<star; i++){
        	//별로 바꿔주기
            answer += '*';
        }
        //별뒤에 뒤에 4자리 수 더해주기
        answer += phone_number.substring(star, star+v);
        return answer;
    }
}

 

부족한 금액 계산하기

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/82612

 

코딩테스트 연습 - 부족한 금액 계산하기

새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이

programmers.co.kr

 

2. 풀이

  • 놀이기구를 1회 이용 하는 비용은 3원, 다회 이용할 경우 배수로 늘어나는 놀이기구 이용 비용을 구한다(4회 이용)
  • 비용과 예산의 차액을 구해 부족한 금액을 출력하고 부족하지 않으면 0을 출력
class Solution {
    public long solution(int price, int money, int count) {
        long answer = 0;
        long m = 0;
        //3원인 놀이기구를 4번탄 비용 구하기
        for (int i=1; i<=count; i++) {
            m += price*i;
            // 계산한 비용(m)이 가지고 있는 돈(money)보다 많으면 차액만큼 출력
            if (money < m) {
                answer = m - money;
            // 계산한 비용(m)이 가지고 있는 돈(money)보다 적으면 0 출력
            } else {
                answer = 0;
            }
        }
        return answer;
    }
}

 

2. 다른사람의 풀이

  • Math.max(a,b) : a,b 두인자중 큰값을 리턴
  • price * (count * (count + 1) / 2) 식으로 30을 구한다음 비용을 제한 값과 0 중 비교하여 큰값을 출력
class Solution {
    public long solution(long price, long money, long count) {
        return Math.max(price * (count * (count + 1) / 2) - money, 0);
    }
}
반응형