다섯 단어를 어떻게 줄바꿈해야 빈칸 제곱 점수가 최소일까요?

폭 10칸 안에 다섯 단어를 정해진 순서로 적어요. 마지막 줄을 제외하고 각 줄에서 남는 칸 수를 제곱해 더한 점수를 여섯 가지 배치에서 비교해요. 앞줄부터 꽉 채운 점수 37보다 작은 유일한 최소 점수 29를 찾아요.

밝은 책상 위 무표기 프린터와 출력 받침의 빈 종이, 종이 더미와 연필

이미지: AI 생성 · OpenAI image generation

좁은 안내문에 “Go to the tall window”를 적어요. 첫 줄에 넣을 수 있는 만큼 단어를 모으면 아래의 점수도 가장 작을까요? 같은 폭의 영문자 한 개와 줄 안 공백 한 개를 각각 1칸으로 정한 종이 모형이에요.

다섯 단어 폭 w₁,…,w₅는 2·2·3·4·6칸이에요. 순서를 바꾸거나 단어를 쪼갤 수 없고, 단어 사이는 공백 한 개예요. 모든 줄은 10칸 이하여야 하며 빈 줄·줄 앞뒤 공백은 없어요. 총 줄 수는 m, i번째 줄의 단어 수는 kᵢ, 공백까지 센 길이는 Lᵢ입니다. 마지막 줄을 제외한 빈칸 수를 제곱해 더한 값을 자체 점수 C로 정해요.

Li=∑j in line iwj+(ki−1)≤10,C=∑i=1m−1(10−Li)2.\begin{gathered}L_i=\sum_{j\text{ in line }i}w_j+(k_i-1)\le10,\\C=\sum_{i=1}^{m-1}(10-L_i)^2.\end{gathered}

앞에서부터 가능한 만큼 넣으면 “Go to the” / “tall” / “window”의 길이는 9·4·6입니다. “Go to” / “the tall” / “window”로 나누면 5·8·6입니다. 제공 교재의 곱셈공식처럼 괄호 안 차를 제곱해 계산해 봐요.

Cfirst=(10−9)2+(10−4)2=37,Cmin⁡=(10−5)2+(10−8)2=29.\begin{aligned}C_{\mathrm{first}}&=(10-9)^2+(10-4)^2=37,\\C_{\min}&=(10-5)^2+(10-8)^2=29.\end{aligned}

29보다 더 작은 안도 있을까요? 끝 단어 window는 앞의 tall과 합치면 4+1+6=11칸이라 혼자 마지막 줄을 써야 해요. 앞 네 단어 사이의 세 곳을 끊거나 잇는 8가지 중, 네 단어 한 줄은 14칸이고 뒤 세 단어 한 줄은 11칸이라 두 가지가 탈락해요.

남은 길이 목록은 (5,8,6), (9,4,6), (5,3,4,6), (2,6,4,6), (2,2,8,6), (2,2,3,4,6)입니다. 점수는 같은 순서로 29·37·110·116·132·213입니다. 따라서 최소는 29이고 둘째 안 하나뿐이에요. 교사는 줄마다 단어 경계와 빈칸을 함께 표시하게 할 수 있어요. 이는 정한 점수의 답이며 실제 문서의 가독성이나 GNU 프로그램의 최적 출력을 보장하지 않아요.

착안: GNU Emacs Manual, §27.6.2 Explicit Fill Commands의 완전한 공식 반환본문을 읽었어요. 단어 사이에서 줄을 나누고 최대 폭에 맞춘다는 관점만 참고했어요. 폭·영문 안내문·제곱 점수·마지막 줄 제외·여섯 배치와 비교는 자체 구성이에요. 원전 자료나 화면을 옮기지 않았어요.

이 글 공유하기

개인정보 및 방문 통계 안내