이 문제에서는 문자열 str[]의 배열이 제공됩니다. 우리의 임무는 배열에 있는 모든 문자열의 점수를 찾는 것입니다. 점수는 문자열의 문자의 알파벳 값의 합과 문자열의 위치의 곱으로 정의됩니다.
문제를 이해하기 위해 예를 들어보겠습니다.
입력
str[] = {“Learn”, “programming”, “tutorials”, “point” }
설명
"학습"의 위치 − 1 →
sum = 12 + 5 + 1 + 18 + 14 = 50. Score = 50
"프로그래밍"의 위치 − 2 →
sum = 16 + 18 + 15 + 7 + 18 + 1 + 13 + 13 + 9 + 14 + 7 = 131 Score = 262
"자습서"의 위치 - 1 →
sum = 20 + 21 + 20 + 15 + 18 + 9 + 1 + 12 + 19 = 135 Score = 405
"포인트"의 위치 - 1 →
sum = 16 + 15 + 9 + 14 + 20 = 74 Score = 296
이 문제를 해결하기 위해 배열의 모든 문자열을 반복하는 간단한 접근 방식이 있습니다. 각 문자열에 대해 위치를 저장하고 문자열의 알파벳 값의 합을 찾습니다. 여러 위치와 합계 및 제품을 반환합니다.
알고리즘
1단계 − 문자열을 반복하고 위치를 저장하고 각 문자열에 대해 2단계와 3단계를 따릅니다. −
2단계 − 문자열의 알파벳 합을 계산합니다.
3단계 - 위치와 합계의 곱을 출력합니다.
예시
위 솔루션의 작동을 설명하는 프로그램,
#include <iostream> using namespace std; int strScore(string str[], string s, int n, int index){ int score = 0; for (int j = 0; j < s.length(); j++) score += s[j] - 'a' + 1; score *= index; return score; } int main(){ string str[] = { "learn", "programming", "tutorials", "point" }; int n = sizeof(str) / sizeof(str[0]); string s = str[0]; for(int i = 0; i<n; i++){ s = str[i]; cout<<"The score of string ' "<<str[i]<<" ' is "<<strScore(str, s, n, i+1)<<endl; } return 0; }
출력
The score of string ' learn ' is 50 The score of string ' programming ' is 262 The score of string ' tutorials ' is 405 The score of string ' point ' is 296