페이지를 불러오는 중…
해결한 사람
1
명
정답률
100.00
%
시간 제한
5
ms
메모리 제한
1024
MB

이런 상황을 상상해 보자. 여러분이 가장 좋아하는 코드 저장소 호스팅 사이트가 Chalmers에서 학술 대회를 개최하고 있다. 그리고 여러분은 그곳에 참석했다. 그들은 병합 충돌, 실수로 변경 사항을 폐기하는 일, 누군가 자신의 커밋을 여러분의 커밋 위에 강제로 푸시하여 여러분이 한 모든 작업이 허사가 되는 일처럼 여러 재미있는 주제에 관해 이야기했다. 또한 효율적인 텍스트 압축의 중요성도 언급했다. 모두가 코드를 공백 대신 탭으로 들여 쓰면 엄청난 양의 공간을 절약할 수 있다는 내용이었다. 하지만 그때 여러분은 무료 점심이 제공된다는 사실을 알고 있었고 몹시 배가 고팠기 때문에 제대로 집중하지 않고 있었다.
집에 돌아온 뒤 자신의 코드를 확인한다. 전부 공백으로 들여 쓰여 있다는 사실을 깨닫는다! 게다가 공백 하나하나가 한 바이트를 온전히 차지한다. 무려 한 바이트나! 이렇게 무의미한 저장 공간 낭비에 질린 여러분은 모든 파일의 들여쓰기에 탭을 사용하도록 변환한다. 하지만 곧 이런 생각이 든다. 만약 탭의 너비가 반드시 공백 네 개가 아니라면 어떨까? 탭의 너비가 달라지면 훨씬 더 많은 공간을 절약할 수 있지 않을까? 여러분은 즉시 이 문제를 해결하기 시작한다.
입력은 프로젝트의 파일 수를 나타내는 하나의 수 로 시작한다. 이어서 개의 파일이 주어진다. 각 파일은 프로그램의 줄 수를 나타내는 수 로 시작한다. 그 뒤의 각 ``줄''은 해당 줄을 들여 쓰는 데 사용된 공백의 수 로 표현된다. 프로젝트에는 최대 개의 파일이 있을 수 있으며, 각 파일에는 최대 개의 줄이 있을 수 있다. 아, 그리고 프로젝트는 Python으로 작성되었으므로 줄 길이는 최대 이며, 이 중 개의 문자가 공백일 수 있다. (여러분은 PEP을 준수하는 코드 골퍼다.)
두 수를 각각 한 줄에 하나씩 출력한다. 먼저 사용자 정의 탭 기호의 너비를 공백 수로 출력하고, 그다음 절약한 저장 공간의 총량을 바이트 단위로 출력한다.
2
2
0
4
2
0
4
4
6
1
8
0
0
0
4
8
8
8
8
8
28
일부 공백을 탭으로 대체한 뒤에도 코드는 여전히 똑같이 보여야 한다. 동일한 양의 공간을 절약하는 탭 크기가 둘 이상이라면 더 작은 것을 선택한다. 또한 탭의 너비는 적어도 공백 하나여야 한다.
Chalmers Challenge 2022
로그인 상태를 확인하는 중입니다.