Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Codeup
- @AllArgsConstructor
- 캡슐화
- entity
- lv1
- 자바
- git
- 부스트코스
- github
- CRUD
- 기본생성자
- @builder
- HashSet
- 파이썬
- 코드업
- 브랜치
- html tag
- @NoArgsConstructor
- stringbuffer
- 깃허브
- Python
- 알고리즘
- java
- 에러
- SQL
- HTML
- 상속
- 부트캠프
- 프로그래머스
- DTO
Archives
- Today
- Total
잉?
[프로그래머스] lv.1 콜라 문제 (JAVA 자바) 본문
풀이 로직
- 빈병 n개 % 줘야 할 빈병 a
- 빈병 n개 / 줘야할 빈병 a * 돌려주는 병 b
- 빈병 n개 = 1번 + 2번
- 만약 빈병(n) < 줘야 할 빈병(a)? break
실패한 풀이
public int solution(int a, int b, int n) {
int answer = 0;
while(true){
if(n < a) break;
answer += division(a, n);
n = division(a, n) + rest(a, n);
}
return answer;
}
public int division(int a, int n){ return n / a;}
public int rest(int a, int n){return n % a;}
돌려받는 병의 수가 1개일 때만 생각했기에 실패.
풀이
public int solution(int a, int b, int n) {
int answer = 0;
while(true){
if(n < a) break;
answer += division(a, n) * b;
n = division(a, n) * b + rest(a, n);
}
return answer;
}
public int division(int a, int n){ return n / a;}
public int rest(int a, int n){return n % a;}
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
객체지향언어답게 작성해보려 했지만 오히려 지저분해졌다.
다시 리팩토링 ↓
class Solution {
public int solution(int a, int b, int n) {
int answer = 0;
while (n >= a) {
answer += n/a*b;
n = n%a + n/a*b;
}
return answer;
}
}
'알고리즘_Algorism > 프로그래머스' 카테고리의 다른 글
[프로그래머스] lv.1 2016년 (JAVA 자바) (0) | 2023.08.18 |
---|---|
[프로그래머스] lv.1 추억 점수 (JAVA 자바) (0) | 2023.08.08 |
[프로그래머스] lv.1 푸드 파이트 대회 (JAVA 자바) (0) | 2023.08.02 |
[프로그래머스] 두 개 뽑아서 더하기 (JAVA 자바) (0) | 2023.07.31 |
[프로그래머스] 문자열 내 마음대로 정렬하기 (JAVA 자바) (0) | 2023.07.27 |
Comments