본문으로 바로가기

[풀이 - The Time in Words] : <Medium / 93.13%>

더보기
string timeInWords(int h, int m)
{
    string result = "";
    //
    string space = " ";
    //
    vector<string> OneToNineteen = 
    {"o' clock", "one", "two", "three", "four", "five",
    "six", "seven", "eight", "nine", "ten",
    "eleven", "twelve", "thirteen", "fourteen", "quarter",
    "sixteen", "seventeen", "eighteen", "nineteen"};
    //
    map<int, string> mTimes;
    for(int i = 0 ; i <= 30; ++i)
    {
        string temp = "";
        if(i < 20)
            temp = OneToNineteen[i];
        else if(i == 20)
            temp = "twenty";
        else if(i < 30)
            temp = "twenty " + OneToNineteen[i % 10];
        else if(i == 30)
            temp = "half";
        //
        mTimes[i] = temp;
    }
    //
    if(m == 0)
        result = mTimes[h] + space + mTimes[m];
    else if(m <= 30)
    {
        result = mTimes[m] + space;
        //
        if(m == 1)
            result += "minute" + space;
        else if(m != 15 && m != 30)
            result += "minutes" + space;
        //
        result += "past" + space + mTimes[h];
    }
    else
    {
        if(m != 45)
            result = mTimes[60-m] + space + "minutes" + space + "to" + space + mTimes[h+1];
        else
            result = mTimes[60-m] + space + "to" + space + mTimes[h+1];
    }
    //
    return result;
}

 


[풀이 - Chocolate Feast] : <Easy / 91.15%>

더보기
int chocolateFeast(int n, int c, int m)
{
    int result = 0;
    // buy chocolate and eat
    int chocolate = n / c;
    int wrapper = 0;
    //
    while(true)
    {
        // count eaten chocolate
        result += chocolate;
        // gather wrapper
        wrapper += chocolate;
        //
        if(wrapper >= m)
        { // exchange wrapper to chocolate
            chocolate = wrapper / m;
            wrapper %= m;
        }
        else // end feast
            break;
    }
    //
    return result;
}

 


[풀이 - Service Lane] : <Easy / 97.37%>

더보기
int GetMinValueInRange(int begin, int end, const vector<int> arr)
{
    int result = INT_MAX;
    //
    for(int i = begin; i <= end; ++i)
    {
        if(arr[i] < result)
            result = arr[i];
    }
    //
    return result;
}
//
vector<int> serviceLane(int n, vector<int> width, vector<vector<int>> cases)
{
    vector<int> result;
    //
    for(vector<int> c : cases)
    {
        int value = GetMinValueInRange(c[0], c[1], width);
        result.push_back(value);
    }
    //
    return result;
}

# 문제 오류 수정해서 풀이

  - serviceLane 함수 선언부 매개변수에 "vector<int> width" 추가

  - serviceLane 함수 실행부 인자에 "width" 추가