[풀이 - 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" 추가