이 문제에서는 문자열 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