일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 모두를위한R데이터분석입문
- IT
- 혼공C
- 데이터처리
- 코딩
- PrimePath
- C언어
- 코틀린
- 빅데이터입문
- c++
- 초보
- 혼자공부하는C언어
- c프로그래밍
- 코딩테스트
- 연습문제
- c언어문제풀이
- 대학교재풀이
- 대학교재
- 알고리즘
- 기술
- 모두를위한 R데이터분석
- 빅데이터
- 소수경로
- 코딩연습
- 문제해결
- Algorithm
- r
- 도전실전예제
- Python
- 혼공씨
- Today
- Total
Jupitor's Blog
[코딩문제] : 두 물통 문제 본문
You have two jugs: a 4-gallon jug and a 3-gallon jug. Neither of the jugs have markings on them. There is a pump that can be used to fill the jugs with water. How can you get exactly two gallons of water in the 4-gallon jug?
당신한테 물통 2개가 있는데, 4갤런짜리랑 3갤런짜리다. 2개 다 어떤 마킹같은건 안되있다. 옆에는 물통에 물을 가득
채울 수 있는 펌프가 있다. 4갤런짜리 물통에 2리터를 담을 수 있는가?
바로 다음 문제는
Generalize the problem above so that the parameters to your solution include the sizes of each jug
and the final amount of water to be left in the larger jug.
큰 물통에 담길 물의 양과 각 물통의 크기를 파라미터화(변수로 받아서) 하여 위 문제를 일반화하여라.
두 물통 중 어느 물통에 담기든 어차피 버리고 담으면 그만이라,
나는 어떤 양의 물을 '담을 수 있는가'에 포커스를 두었다.
Recursion을 이용했다.
두 물통을 가지고 할 수 있는 동작이 무엇이 있나 살펴보니 6가지 동작이 있었다.
두 물통 a,b가 있다고 하면
1. 물통 a에 물통 b의 물을 붓는다
2. 물통 b에 물통 a의 물을 붓는다
3. 물통 a를 가득 채운다
4. 물통 b를 가득 채운다
5. 물통 a를 비운다
6. 물통 b를 비운다
Recursion으로 함수를 호출하면서 각 모든 행동을 하게끔 했고,
중복되는 경우 return False로 함수 콜을 없앴다.
메인함수. a, b는 물통의 크기이다.
0부터 9까지 4, 3 크기의 물통을 가지고 만들 수 있는 수들은 무엇일까 궁금했다.
0, 1, 2, 3, 4 를 만들 수 있는듯.
상식적으로 가장 큰 물통의 크기가 4니까 5이상의 수는 당연히 안될 것이다.
다른 경우를 볼까?
10, 7의 물통을 가지고 만들 수 있는 물의 양은?
다 만들 수 있는건가? 어떻게 이게 가능하지...
'IT > 알고리즘' 카테고리의 다른 글
[코딩문제] 용병과 식인종 (0) | 2021.09.15 |
---|---|
[Python] 중위 -> 후위, 전위 수식 변환, 수식 계산, html 태그 체크 (0) | 2021.08.17 |
[Python] 스택, 큐, 더블큐, 괄호 체크, 10진수 -> 2진수, 10진수 -> n진수 (0) | 2021.08.17 |
[Python] 시어핀스키와 하노이 (0) | 2021.08.17 |
nhn 그룹사 신입 개발자 공개채용 프리테스트 1 기출문제 (0) | 2020.09.28 |