문제 설명
우리는 모두 Twix를 좋아하지만 (최상의 사탕이기 때문에) 이것은 아이들의 첫 번째 할로윈입니다 --- 우리는 그들을 위해 각 사탕 유형 중 적어도 하나를 가져와야합니다. Numberline 애비뉴에 거주하는 모든 할로윈 사람들은 올해 어떤 종류의 사탕을 줄지 이메일을 보냅니다.
오! 그리고 우리는 1D 세계에 살고 있습니다.
어떤면에서는 예외적으로 게으르고 다른면에서는 게으르지 않기 때문에 거리를 따라 위치를 제공하는 주택지도를 만들었습니다. 우리는 또한 그들이 가지고있는 사탕의 종류에 주목했습니다. 올해 우리가 만든지도는 다음과 같습니다.
[(-2, {"Kisses", "KitKats"}),
(1, {"KitKats", "Peanut Butter Cups"}),
(6, {"Kisses", "Twix"}),
(9, {"Skittles"}),
(10, {"Twix"})]
아이들의 작은 다리를 위해서, 우리 는 각 유형의 사탕 중 적어도 하나 를 모으기 위해 이웃의 어느 집에서나 가장 짧은 산책을 해야합니다 .
예
몇 명의 사용자 (Shaggy 포함)의 요청에 따라 일부 예제를 작성하겠습니다. 바라건대 이것은 일을 정리합니다. :) 입력 :
[(-2, {"Kisses", "KitKats"}),
(1, {"KitKats", "Peanut Butter Cups"}),
(6, {"Kisses", "Twix"}),
(9, {"Skittles"}),
(10, {"Twix"})]
산출:
[1, 2, 3]
다른 맵과 솔루션 ...
입력:
[(-3, {"KitKats", "Twix"}),
(-1, {"Hundred Grands"}),
(3, {"Kisses"}),
(12, {"Hundred Grands", "Twix", "KitKats"})]
출력 :
[0, 1, 2]
우리는 9 번 집에서 6 번과 1 번 집에 사탕을 모아서 시작할 수 있습니다. 8 칸을 걸어 사탕 할당량을 채우지 만 가장 짧은 해결책입니까?
규칙
출품작은 예제와 비슷하게 구조화 된 단일 주장을 취하고 가장 짧은 솔루션으로 방문 할 주택의 지수를 출력해야합니다.
전형적인 코드 골프 규칙이 적용됩니다 : 바이트 단위의 가장 짧은 정확한 솔루션이 승리합니다!
추신 이것은 세계 최대의 기술 회사 중 하나에 의해 나에게 주어진 인터뷰 질문이었습니다. 골프가 마음에 들지 않으면, k는 캔디 유형의 수이고 n은 주택 수인 O (k * n) 시간 솔루션을 찾으십시오.
편집하다
Jonathon Allan이 지적했듯이이 경우 "표시"의 의미에 대해 약간의 혼란이 있습니다. 차선의 좌표가 아니라 인수 목록에 주택 위치를 출력하려고합니다 .