BOJ_16769 Mixing Milk
- TOC {:toc}
이 글은 백준 온라인 저지의 16769번 문제를 파이썬(Python)으로 풀이한 것을 모아놓은 글입니다.
일종의 연습 기록이며 제가 정답을 받은 코드와 참고할만한 다른 코드를 같이 기록합니다. 필요한 경우 코드에 대한 해설을 기록합니다만 코드는 통과했어도 해설은 틀릴 수 있기 때문에 가볍게 참고해주시길 부탁드립니다. 피드백은 편하신 방법으로 자유롭게 주시면 감사하겠습니다.
2021.08.10 (Python)
메모리 | 시간 | 코드 길이 |
---|---|---|
29200 KB | 84 ms | 244 B |
단계 | 시작 시각 | 끝난 시각 | 걸린 시간 |
---|---|---|---|
문제 이해 | 23:37:08 | 23:40:46 | |
풀이 생각 1 | 16:14:16 | 16:26:30 | |
풀이 생각 2 | 21:33:27 | 21:37:17 | |
코딩 | 21:37:41 | 21:44:19 |
B = []
M = []
for _ in range(3):
b, m = map(int, input().split())
B.append(b)
M.append(m)
for i in range(1, 101):
i %= 3
# 이동하는 우유의 양
pour = min(B[i] - M[i], M[i - 1])
M[i - 1] -= pour
M[i] += pour
print("\n".join(map(str, M)))
아이디어 & 풀이
- 전 우유 통에서 다음 우유 통으로 이동할 우유의 양을 구한 뒤 전후 우유 통에 각각 빼거나 더해주면 된다.
- 다음 우유 통의 가용 용량(용량 제한 - 현재 우유의 양)과 전 우유 통의 우유의 양을 비교해서 더 작은 값을 선택하면 된다.
- 우유를 옮기다 보면 각 통이 담는 용량이 반복되긴 하지만 전의 우유량 조합을 기억해서 현재 우유량 조합과 비교해 반복 여부를 판단하는 것보다 그냥 100번 반복 후 출력하는 게 더 효율적일 것 같다.
2023.02.17 (JS)
메모리 | 시간 | 코드 길이 |
---|---|---|
9332 KB | 124 ms | 584 B |
단계 | 시작 시각 | 끝난 시각 | 걸린 시간 |
---|---|---|---|
문제 이해 | 20:49:52 | 20:51:43 | |
풀이 생각 | 20:51:45 | 20:54:02 | |
코딩 | 20:54:03 | 21:01:34 |
const fs = require("fs");
const input = fs.readFileSync('/dev/stdin').toString().trim().split("\n");
function main() {
const capacity = [];
const milk = [];
input.forEach((line) => {
const [c, m] = line.split(" ").map((n) => parseInt(n));
capacity.push(c);
milk.push(m);
});
for (let i = 0; i < 100; i += 1) {
const pourAmount = Math.min(capacity[(i + 1) % 3] - milk[(i + 1) % 3], milk[i % 3]);
milk[i % 3] -= pourAmount;
milk[(i + 1) % 3] += pourAmount;
}
return milk.join("\n");
}
console.log(main());
-
ps-python ps-js