- 세상의 모든 계산기 수학, 과학, 공학 이야기 수학 ()
무게가 서로다른 128개의 물건은 양팔저울로 몇번만에 세번쩨로 무거운물체를 알아낼수 있나요?


출처 : http://kin.naver.com/qna/detail.nhn?d1id=11&dirId=1113&docId=218014324&page=1#answer2
네이버 지식인에서 본 문제입니다.
재밌는 것 같으니, 같이 함 풀어봅시다.
댓글1
-
세상의모든계산기
제가 생각한 방법
1. 1차전
128개를 토너먼트 방식으로 붙여서
가장 무거운 것을 찾습니다. http://ko.wikipedia.org/wiki/싱글_엘리미네이션_토너먼트
이해하기 쉽게 사람이 경기를 하는 것으로 바꾸어 생각해 보겠습니다.
이 때 필요한 경기의 수는
64+32+16+8+4+2+1 = 127 경기2. 2차전
1차전 우승자를 제외시키고,
나머지 중에서 가장 무거운 것을 찾는 2차전을 엽니다.
이 때 참가할 자격이 있는 선수는
1차전 우승자에게 1차전에서 떨어진 자 가 됩니다.
1차전에서 우승자는 결승전 포함하여 총 7경기를 치루어 모두 이겼으니까(7전 7승 무패) 7명이 후보가 있겠고,
각 후보의 전적은 '1전0승1패', '2전1승1패', '3전2승1패', '4전3승1패', ..., '7전6승1패=(1차전 준우승자)'가 됩니다.
이 7명의 후보를 먼저 떨어진 순서대로 묶어 토너먼트를 치루고, 가장 무거운 돌을 찾습니다.
(1차전 준우승자는 1R 부전승)
이 때는 3+2+1 = 6경기를 치루어야 합니다. 3. 3차전
이제 드디어 세번째 무거운 돌을 가릴 차례가 되었습니다.
3차전 참가자격이 있는 선수는
조건 a = 2차전 우승자(=준우승자)에게 1차전에서 떨어진 자
조건 b = 2차전 우승자(=준우승자)에게 2차전에서 떨어진 자
3 - 경우1. 2차전 우승자가 1차전 준우승자(1차전 전적 7전6승1패)인 경우
a. 1차전 준우승자는 1차전에서 총 7경기를 하였는데, 6번 이기고, 1번(결승전)은 졌으므로, 후보 6명.
b. 2차전에서 (부전승을 제외하고) 2 경기를 하였으므로 후보 2명.
총 후보 8명
경기수 7회3 - 경우2. 2차전 우승자가 4강에서 1차전 우승자에게 떨어진 자일 경우(1차전 전적 6전5승1패)
a. 후보 5명
b. 후보 3명 (총 3경기)
총 후보 8명
경기수 7회3 - 경우 3. 2차전 우승자가 1차전 전적 5전4승1패인 경우
a. 후보 4명
b. 후보 3명
총 후보 7명
경기수 6회3 - 경우 4. 2차전 우승자가 1차전 전적 4전3승1패인 경우
a. 후보 3명
b. 후보 3명
총 후보 6명
경기수 5회3 - 경우 5. 2차전 우승자가 1차전 전적 3전2승1패인 경우
a. 후보 2명
b. 후보 3명
총 후보 5명
경기수 4회3 - 경우 6. 2차전 우승자가 1차전 전적 2전1승1패인 경우
a. 후보 1명
b. 후보 3명
총 후보 4명
경기수 3회3 - 경우 7. 2차전 우승자가 1차전 전적 1전0승1패인 경우
a. 후보 0명
b. 후보 3명
총 후보 3명
경기수 2회4. 결론
따라서 총 저울로 재야하는 횟수는 1차전 횟수 + 2차전 횟수 + 3차전 횟수가 되고
127 + 6 + (2~7) = 135~140 회
최소 135경기, 최대 140경기를 통해 3번째 무거운 돌을 구별해낼 수 있다.
세상의모든계산기 님의 최근 댓글
V2 갱신 (nonK / K-Type 통합형) 예전에는 직접 코드작성 + AI 보조 하여 프로그램 만들었었는데, 갈수록 복잡해져서 손 놓고 있었습니다. 이번에 antigravity 설치하고, 테스트 겸 새로 V2를 올렸습니다. 직접 코드작성하는 일은 전혀 없었고, 바이브 코딩으로 전체 작성했습니다. "잘 했다 / 틀렸다 / 계산기와 다르다." "어떤 방향에서 코드 수정해 봐라." AI가 실물 계산기 각정 버튼의 작동 방식에 대한 정확한 이해는 없는 상태라서, V1을 바탕으로 여러차례 수정해야 했습니다만, 예전과 비교하면 일취월장 했고, 훨씬 쉬워졌습니다. 2026 02.04 A) 1*3*5*7*9 = 계산 945 B) √ 12번 누름 ㄴ 12회 해도 되고, 14회 해도 되는데, 횟수 기억해야 함. ㄴ 횟수가 너무 적으면 오차가 커짐 ㄴ 결과가 1에 매우 가까운 숫자라면 된 겁니다. 1.0016740522338 C) - 1 ÷ 5 + 1 = 1.0003348104468 D) × = 을 (n세트) 반복해 입력 ㄴ 여기서 n세트는, B에서 '루트버튼 누른 횟수' 3.9398949655688 빨간 부분 숫자에 오차 있음. (소숫점 둘째 자리 정도까지만 반올림 해서 답안 작성) 참 값 = 3.9362834270354... 2026 02.04 1. 분모 먼저 계산 400 × 10000 = 100 × 6000 = GT 결과값 4,600,000 역수 처리 ÷÷== 결과값 0.00000021739 2. 분자 곱하기 ×3 00 00 00 ×4 00 ×1 00 00 최종 결과 = 2,608,695.65217 2026 02.04 해결 방법 1. t=-1 을 기준으로 그래프를 2개로 나누어 표현 ㄴ 근데 이것도 tstep을 맞추지 않으면 문제가 발생할 것기도 하고, 상관이 없을 것 같기도 하고... 모르겠네요. 2. t=-1 이 직접 계산되도록 tstep을 적절하게 조정 tstep=0.1 tstep=0.01 도 해 보고 싶지만, 구간 크기에 따라 최소 tstep 이 변하는지 여기서는 0.01로 설정해도 0.015로 바뀌어버립니다. 그래서 tstep=0.02 로 하는게 최대한 긴 그래프를 얻을 수 있습니다. 2026 02.02 불연속 그래프 ti-nspire는 수학자처럼 연속적인 선을 그리는 것이 아니라, 정해진 `tstep` 간격으로 점을 찍고 그 점들을 직선으로 연결하는 'connect-the-dots' 방식으로 그래프를 그립니다. 여기에 tstep 간격에 따라 특이점(분모=0)이 제외되어 문제가 나타난 것입니다. seq(−2+0.13*t,t,0,23) {−2.,−1.87,−1.74,−1.61,−1.48,−1.35,−1.22,−1.09,−0.96,−0.83,−0.7,−0.57,−0.44,−0.31,−0.18,−0.05,0.08,0.21,0.34,0.47,0.6,0.73,0.86,0.99} t=-1 에서 그래프를 찾지 않습니다. 그 좌우 값인 −1.09, −0.96 두 값의 그래프값을 찾고, Window 범위를 보고 적당히 (연속되도록) 이어서 그래프를 완성하는 방식입니다. 그래서 t=-1에서도 그래프 값이 존재하는 것입니다. 2026 02.02