Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

문자열을 인쇄하기 위한 다이얼 회전 수를 찾는 C++ 코드

<시간/>

모든 소문자 영어 알파벳이 포함된 회전식 다이얼이 있다고 가정합니다. 다이얼에 프린터가 부착되어 있고 회전 다이얼의 포인터에 3초 동안 머물고 있는 문자가 인쇄됩니다. 회전 다이얼은 초기에 문자 'a'에 머물며 문자를 인쇄할 때마다 초기 위치로 재설정되지 않습니다. 문자열 s가 주어지고 주어진 문자열을 출력해야 합니다. 다이얼을 다른 문자로 이동할 때마다 한 번 회전합니다. 주어진 문자열 's'를 인쇄하는 데 필요한 총 회전량을 찾아야 합니다.

따라서 입력이 s ="elephant"와 같으면 출력은 63이 됩니다.

단계

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

t := 'a'
res := 0
for initialize i := 0, when i < size of s, update (increase i by 1),
do:
   res := res + minimum of (|t - s[i]|, 26 - |t - s[i]|)
   t := s[i]
return res

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;
#define N 100
int solve(string s) {
   char t = 'a';
   int res = 0;
   for(int i = 0; i < s.size(); i++){
      res += min(abs(t - s[i]), 26 - abs(t - s[i]));
      t = s[i];
   }
   return res;
}
int main() {
   string s = "elephant";
   cout<< solve(s);
   return 0;
}

입력

"elephant"

출력

63