개발자/프로그래머스

[프로그래머스] JAVA_부족한 금액 계산하기

푸루닉 2023. 4. 15. 23:28

https://school.programmers.co.kr/learn/courses/30/lessons/82612?language=java 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

// 정말 정말 간만에 프로그래머스를 시작했다. 취업이다 프로젝트다 바빠서 핑계를 댔지만 다시 알고리즘을 풀면서 더 높은 회사에 지원할 수 있는 역량을 가꿔나가고자 1일1커밋을 실천할 것이다. 화이팅!!


 

0원
놀이기구 N번째 이용
원래 이용료의 N배
1회차 - 100원
2회차 - 200원
3회차 300원
N번 타게 되면 내 금액 M에서 HM 모자란지 return

원래가격 : bm
count : c
1부터~c까지
내가가진금액 : m
얼마가 모자라냐 : hm

만약에 
3n씩 가격이 늘어나고 c
20 - ((3*1)+(3*2)+(3*3)+(3*4)) = 10
for문을 돌리면되겠네

먼저 너무 간만에 문제를 풀다보니 기본문법 조차 기억안나기에 먼저 머릿속으로 어떻게 진행할 것인지 간략하게 정리해보았다. 정리해본결과 for문을 이용하면 될 것이라 판단하여 코드를 작성했다.

public class programmerse_1 {
    public static void main(String[] args) {
            int price = 3;
            int money = 20;
            int count = 4;

        Solution sdf = new Solution();
        System.out.println(sdf.solution(price, money, count));


    }
    static class Solution {
        public long solution(int price, int money, int count) {
            long answer = -1;
            long am = 0;
            for(long i = 1; i<=count; i++) {
               am += price * i;
            }

            answer = (money - am)*answer;

            if(money > am) {
                answer = 0;
            }
            return answer;
        }
    }
}

문제의 핵심

1. for문의 활용

2. 절댓값으로 변환

 

3. 테스트 케이스 19 ~ 22

 

아마 처음 프로그래머스를 접하는 사람들은 내 코드가 분명히 맞는데 왜 안되는 것인가라고 생각이 들 것이다.

그렇다면 자신이 선언한 변수의 자료형을 유심히 지켜볼 필요가 있다.

 

바로 long형으로 선언을 하지 않았기에 오류가 난 것이다.

 

꼭 문제와 동일한 자료형을 써서 테스트 케이스 19~22에 시간이 안잡아 먹히길 바란다.