문제

설명

  • ‘A’, ‘E’, ‘I’, ‘O’, ‘U’ 만을 사용해서 입력된 단어가 사전의 몇번째 단어인지 구하는 문제
  • 이 문제는 대충 풀었는데 풀려서 황당했다.
  • 다 풀고 생각해보니 값을 1~5만 사용해서 long long 타입을 쓸 필요가 없었다.

코드

#include <string>
#include <vector>

using namespace std;

bool isComp(const vector<long long>& ll, const vector<long long>& wordll) {
    for (int i = 0; i < 5; i++) {
        if (ll[i] != wordll[i]) {
            return false;
        }
    }
    return true;
}

void llplus(vector <long long> &ll) {
    bool isAdded = false;
    for (int i = 0; i < 5; i++) {
        if (ll[i] == 0) {
            ll[i]+=1;
            isAdded = true;
            break;
        }
    }
    if (!isAdded) {
        ll[4] +=1;
    }
    if (ll[4] > 5) {
        ll[4] = 0;
        ll[3] += 1;
    }
    if (ll[3] > 5) {
        ll[3] = 0;
        ll[2] += 1;
    }
    if (ll[2] > 5) {
        ll[2] = 0;
        ll[1] += 1;
    }
    if (ll[1] > 5) {
        ll[1] = 0;
        ll[0] += 1;
    }
}

int solution(string word) {
    int answer = 0;
    vector<long long> ll;
    vector<long long> wordll;
    for (int i = 0; i < 5; i++) {
        ll.push_back(0);
        wordll.push_back(0);
    }
    
    for (int i = 0; i < word.size(); i++) {
        if (word[i] == 'A') {
            wordll[i] = 1;
        }
        if (word[i] == 'E') {
            wordll[i] = 2;
        }
        if (word[i] == 'I') {
            wordll[i] = 3;
        }
        if (word[i] == 'O') {
            wordll[i] = 4;
        }
        if (word[i] == 'U') {
            wordll[i] = 5;
        }
    }
    
    
    for (;;) {
        answer++;
        llplus(ll);
        if (isComp(ll, wordll)) {
            break;
        }
    }
    
    return answer;
}

댓글을 남기시려면 Github 로그인을 해주세요