티스토리 뷰

problem

입력 : AEIOU 를 사용하여 만들어진 문자열

출력 : 입력된 문자열의 사전순 위치

제한사항

  • word의 길이는 1 이상 5 이하입니다.
  • word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다.

solution

AEIOU 를 각각 0, 1, 2, 3, 4 로 매핑한 후 가장 큰 자릿수부터 781, 156, 31, 6, 1 를 곱하여 구한다. 여기서 곱해주는 수는 한 n 번째의     알파벳이 A 일떄 나올 수 있는 모든 문자열의 경우의 수이다.

 

CODE

#include <string>
#include <vector>
#include <map>

using namespace std;

int solution(string word) {
    int answer = word.size();
    map<char, int> m;
    m['A'] = 0;
    m['E'] = 1;
    m['I'] = 2;
    m['O'] = 3;
    m['U'] = 4;
    int cn = 781;
    for(char i : word){
        answer += cn * m[i];
        cn = (cn - 1) / 5;
    }
     
    return answer;
}

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함