일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 프로그래머스
- 리눅스마스터 3과목
- 자바
- 리눅스마스터 1급 정리
- map
- 반복문
- Memoir
- 코테
- 리눅스
- 코딩테스트
- 카카오
- 백준 java
- 문자열
- toCharArray
- GoingBus
- 연습문제
- 스프링 빈
- Kotlin
- 리눅스마스터1급
- Linux
- 개발자 회고록
- 백준 javascript
- 월간코드챌린지
- Java
- 명령어
- 스프링 컨테이너
- 고잉버스
- JavaScript
- 자바스크립트 코딩의 기술
- java 백준 1차원 배열
- Today
- Total
hoon DevLog
[Java] 프로그래머스 부족한 금액 계산하기 자바 본문
문제 출처 : 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
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
Java 프로그래머스 예산 자바 (0) | 2022.06.15 |
---|---|
[Java] 프로그래머스 소수 만들기 자바 (0) | 2022.06.14 |
Java 프로그래머스 최소 직사각형 자바 (0) | 2022.06.14 |
Java 프로그래머스 나머지가 1이 되는 수 찾기 자바 (0) | 2022.06.13 |
Java 프로그래머스 약수의 개수와 덧셈 자바 (0) | 2022.06.13 |