우리는 모두 구식 전화 키패드에 익숙합니까? 참고로 다음과 같습니다.
소문자 ASCII 문자와 단일 공백 으로 만 구성된 문자열이 주어진 경우 전화 키패드로 전체 문자열을 위와 같이 입력하려면 탭 수를 반환해야합니다.
이에 익숙하지 않은 사람들을 위해 다음과 같이 작동합니다.
2
예를 들어, 숫자가있는 키 에는 문자열이abc
적혀 있습니다. 을 입력a
하려면이 키를 한 번b
눌러야합니다. 두 번c
눌러야하고 세 번 눌러야합니다.동일한 키에있는 연속 문자의 경우 1 초 후에 다시 눌러야합니다. 따라서을 입력
cb
하려면을 3 번 누르고c
잠시 기다린 다음을 두 번 눌러b
5 번 탭해야합니다.한 번만 누르면되는 단일 공백을 제외하고 다른 모든 키에도 동일하게 적용됩니다 . 또한 열쇠
7
와9
네 글자가 있습니다. 동일한 알고리즘이 적용되며 문자의 수만 다릅니다. 각 키에 해당하는 문자열은 위의 이미지 (소문자) 또는 다음 목록에서 찾을 수있는 모든 문자가 포함되어 있습니다."abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz", " "
테스트 사례
입력-> 출력 (설명) ""-> 0 (아무것도 탭하지 않아야 함) "물"-> 8 ( "w, a, t"는 각각 1 개의 탭 (키 9, 2 및 8), "e"는 2 개의 탭 (키 3), "r"은 3 개의 탭 (키 7) ), 1 + 1 + 1 + 2 + 3 = 8) "비누"-> 9 (4 + 3 + 1 + 1) "칸델라"-> 13 (3 + 1 + 2 + 1 + 2 + 3 + 1) "코드 골프"-> 20 (3 + 3 + 1 + 2 + 1 (공간) + 1 + 3 + 3 + 3) "언덕의 왕"-> 33 (2 + 3 + 2 + 1 + 1 + 3 + 3 + 1 + 1 + 2 + 2 + 1 + 2 + 3 + 3 + 3)
명세서
표준 I / O 규칙 및 기본 허점이 적용됩니다.
언어의 기본 문자열 유형으로 만 입력 할 수 있습니다. 출력은 정수 또는 해당 정수의 문자열 표현 일 수 있습니다.
이것은 code-golf 이며 모든 언어에서 가장 짧은 답변 입니다 .