질문1
A,B,C 세 사람이 같이하면 5일 만에 끝낼 수 있는 일을 A, B 두 사람이 하면 10일, B, C 두 사람이 하면 6일 만에 끝낸다고 한다. 이 일을 B 혼자서 하게 되면 며칠이나 걸릴까?
세팅
- 끝내야 하는 일의 총 양을 1 이라고 하고 A, B, C 세 사람이 하루에 할 수 있는 일의 양을 a, b, c 라고 하자. 그러면 다음과 같은 식을 적어 볼 수 있다.
- 각 사람이 하루에 할 수 있는 양을 a,b,c 라고 정할 것을 다시한번 기억하자!
- 결국 b를 먼저 구하고, b x 숫자 > 1 가 되는 최소 숫자가 정답이 될 것이다.
풀이
- A,B,C 가 같이 하면 5일: \[5a + 5b + 5c = 1 \qquad (1)\]
- A,B 가 같이 하면 10일: \[10a + 10b = 1 \qquad (2)\]
- B,C 가 같이 하면 6일: \[6b + 6c = 1 \qquad (3)\] 이 식들을 풀어서 a,b,c 를 구하면 다음과 같다.
## [,1]
## a = 0.033
## b = 0.067
## c = 0.100
이 식을 푸는 방법은
식 (1)에 2를 곱하면 \[10a + 10b + 10c = 2 \qquad (4)\] 이 되고 여기서 식 (2) 를 빼면 \(c=1/10\) 을 구할 수 있다.
c의 값을 알았기 때문에 이를 식 (3)에 넣어서 b를 구하면 되고 똑같은 방법으로 b를 알았기 때문에 이를 식 (2)에 넣어서 a를 구해주면 된다.
b가 하루에 하는 일의 양은 0.067 이고 끝내야 하는 일의 총양은 1이므로
- b가 10일 일하면 0.67
- b가 15일 일하면 1.005
- b가 20일 일하면 1.34
따라서 혼자서 일하는 경우에, b가 15일을 일하면 일을 끝낼 수 있게 된다.
R code
위의 선형 방정식을 푸는 것은 R로도 다음과 같이 간단하게 해볼 수 있다.
X = matrix(c(5,5,5,
10,10,0,
0,6,6),
nrow = 3,
ncol = 3,
byrow = TRUE)
y = matrix(c(1,1,1),
nrow = 3,
ncol = 1)
sol = round(solve(X,y),3)
row.names(sol) = c('a = ','b = ','c = ')
print(sol)
## [,1]
## a = 0.033
## b = 0.067
## c = 0.100
질문2
풀장에 물을 채우는데, A관과 B관을 동시에 사용하면 3시간, B관과 C관을 동시에 사용하면 4시간, C관과 A관을 동시에 사용하면 6시간이 걸린다. 이 때 A,B,C 관을 동시에 사용하면 풀장의 물을 가득 채우는 데 몇 시간 정도 걸릴까?
세팅
풀장 전체의 크기를 임의로 1로 가정하자. 크기는 굳이 1이 아니라 아무 숫자로 가정해도 상관없다. 편의상 3, 4, 6시간 걸린다는 정보가 있으니 12로 가정하자.
위에서는 하루당 A,B,C가 할 수 있는 일을 a,b,c 로 생각했다면, 이번에는 A,B,C 관이 한시간에 채울 수 있는 물의 양을 a,b,c 라고 생각하자.
나머지는 위의 풀이와 비슷하게…. 이번에는 1이 아니라 12로 설정했기 때문에 다음과 같이 식을 적어볼 수 있다.
풀이
- A,B 관을 이용하면 3시간: \[3a + 3b = 12 \qquad (5)\]
- B,C 관을 이용하면 4시간: \[4b + 4c = 12 \qquad (6)\]
- C,A 가 같이하면 6일: \[6a + 6c = 12 \qquad (7)\] 마찬가지로 이 식들을 풀면
## [,1]
## a = 1.5
## b = 2.5
## c = 0.5
문제로 돌아가서, A,B,C 관을 동시에 사용할 경우 걸리는 시간을 x 라두면 \[x\cdot(a+b+c)=12\] a+b+c가 4.5 이므로 x 는 \(2\frac{2}{3}\) 이다. 따라서 걸리는 시간은 \(2\frac{2}{3}\) 시간이고, 이는 2시간 40분이다.
R code
위의 선형 방정식을 푸는 것은 R로도 다음과 같이 간단하게 해볼 수 있다.
X = matrix(c(3,3,0,
0,4,4,
6,0,6),
nrow = 3,
ncol = 3,
byrow = TRUE)
y = matrix(c(12,12,12),
nrow = 3,
ncol = 1)
sol = round(solve(X,y),3)
row.names(sol) = c('a = ','b = ','c = ')
print(sol)
## [,1]
## a = 1.5
## b = 2.5
## c = 0.5