티스토리 뷰
[문제]
[해설]
- 문제를 보고 이건 재귀함수를 이용해야하는걸 느꼈다.
- 아직 재귀함수를 공부하지 않았는데... 느낌상 요래저래 코드를 짜다보니 아래와 같이 풀었다.
- 사실 반드시 재귀함수를 이용할 필요는 없다. 반복문만 사용해도 된다.
class Solution {
public int solution(int a, int b, int n) {
// a : 마트에 주어야 하는 병 수
// b : 빈 병 a개를 가져다 주면 마트가 주는 콜라 병 수
// n : 상빈이가 가지고 있는 빈 병의 개수
int answer = this.howBottle(a, b, n, 0);
return answer;
}
private int howBottle(int a, int b, int n, int count) {
// 받을 수 있는 콜라 개수
int mock = (n / a);
int howMany = b * mock;
// 지금까지 받은 콜라 개수
count = howMany;
// 마트에 주어야 하는 병 수 = 상빈이가 가지고 있는 빈 병의 개수
int next = howMany + (n % a);
if(mock >= 1) {
return count + howBottle(a, b, next, count);
// 내가 현재 함수 호출에서 받은
} else {
return count;
}
}
}
- 변수 선언을 조금 더 줄일 수 있었는데 최초로 재귀함수를 이용한 것을 기념하고자 그냥 이대로 두었다.
- 다른 사람의 재귀 함수 풀이
class Solution {
public int solution(int a, int b, int n) {
return recursive(a, b, n, 0);
}
public int recursive(int a, int b, int n, int result) {
if (n < a) {
return result;
}
int change = (n / a) * b;
n = (n % a) + change;
return recursive(a, b, n, result + change);
}
}
cf) 재귀함수는 아래 글을 참고했다.
https://crazykim2.tistory.com/591
[JAVA] 재귀함수(Recursion Function) 개념 및 예제
안녕하세요 최근에 알고리즘 공부를 하면서 재귀함수를 응용해서 풀은 문제가 있습니다 실제 회사에서 개발을 하면서 거의 써본적이 없는데 알고리즘을 풀다보면 종종 쓰일 것 같습니다 이번
crazykim2.tistory.com
'흥미 > 코딩테스트' 카테고리의 다른 글
#23😊 추억 점수 (0) | 2023.04.04 |
---|---|
#22 😂 체육복 with Greedy algorithm (0) | 2023.03.28 |
#20 😂 프로그래머스 - 카드 뭉치(Level 1) / Queue 사용해보기 (1) | 2023.03.15 |
😒 #19 프로그래머스 - 삼총사(Level 1) (0) | 2023.03.11 |
😊 #18 프로그래머스 - 푸드 파이트 대회(Level 1) (0) | 2023.03.08 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- db
- MySQL
- Java8
- node.js
- DART
- Stream
- Phaser
- 프로그래머스
- java
- jpa
- 빅데이터 분석기사
- 메모리
- Phaser3
- OS
- nosql
- MongoDB
- 자료구조
- Advanced Stream
- API
- spring
- 빅데이터
- 코딩테스트
- 코테
- 운영체제
- SpringBoot
- git
- SQL
- Spring Boot
- 알고리즘
- 프로세스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
글 보관함