hoon's bLog

[Java] 프로그래머스 부족한 금액 계산하기 자바 본문

코딩테스트/프로그래머스

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

개발한기발자 2022. 6. 14. 12:07
반응형

문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/82612

 

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

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

programmers.co.kr


 

[나의 풀이]

class Solution {
    public long solution(int price, int money, int count) {
        long answer = 0;
        long sum = 0;
        for(long i=1; i<=count; i++){
            sum += (price * i);
        }
        answer = money - sum;
        //삼항연산자를 통해 return값이 음수인 경우 절대값 함수 Math.abs 활용
        return (sum < money) ? 0 : Math.abs(answer);
    }
}

정말 기대된다!!!

또 어떻게 코딩으로 예술을 해놨을지!!!

 

[다른 사람의풀이-1]

class Solution {
    public long solution(long price, long money, long count) {
    	//1부터 count까지 합 공식을 통한 연산으로 반복문 생략...
        return Math.max(price * (count * (count + 1) / 2) - money, 0);
    }
}

 

[다른 사람의풀이-2]

class Solution {
    public long solution(int price, int money, int count) {
        long answer = 0;
        answer =  factorial(count, price) - money;

        if(answer < 0) return 0;
        return answer;
    }
    
    // 재귀함수 이용, N-factorial 함수 만들어서 리턴
    public static long factorial(int N, int price) { ;
        if(N <= 1) return (N * price);
        return (N * price) + factorial(N - 1, price);
    }
}

 

[정리]

- 짧다고 생각했던 반복문조차 합 공식 앞에선 사치다...

- 재귀(Recursion) 함수란 특정 함수 내에서 자기 자신을 다시 호출하여 문제를 해결해나가는 함수

- 자기 자신을 계속 호출하는 방식으로, 함수 안에 반드시 종료 구간의 Base Case를 생각하며 코드를 구현해야 함

- 알고리즘 자체가 재귀적인 표현이 자연스러운 경우, 변수 사용을 줄여주는데 재귀 함수가 유리!

 

개인피셜 난이도 : ★☆☆☆☆

계속해서 다른 사람의 코딩을 보며 무릎을 탁 치는 것은

아마도 다른 맛집의 레시피를 보며 새로운 맛을 찾아가는 것과 같지 않을까?

특별히 오늘 본 이 재귀 함수는 좀 더 깊게 알아보고,

실전에서도 자연스럽게 쓰일 수 있도록 연습이 필요한 듯하다.

추후 블로그를 통해 다시 다뤄보기에 아주 심도 있는 내용이 될 듯하다!

 

끝!

 

참고 블로그

- 재귀 함수 : https://lktprogrammer.tistory.com/106

 

[자바 프로그래밍] 재귀(Recursion) 알고리즘 기초

이번 포스팅에서는 재귀 알고리즘 기초에 대해서 알아보겠습니다.   1. 재귀 알고리즘 기초. 재귀 (Recursion) 함수란 특정 함수 내에서 자기 자신을 다시 호출하여 문제를 해결해나가는 함수입니

lktprogrammer.tistory.com

- 재귀 함수에 관련된 각종 의견들 : https://kldp.org/node/134556

 

재귀함수에 대한 질문입니다. | KLDP

초보적인 질문인거 같아서 망설이다가 글 올려봅니다. 얼마전에 면접을 보다가 재귀함수에 대해 질문하셨는데 답변을 잘 못하겠더라구요. 검색엔진을 찾아봐도 원하는 답변이 없어서 여기에

kldp.org

728x90
반응형