문제 URL:
5622번: 다이얼
첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.
www.acmicpc.net
다음 문제는 알파벳 대문자로 이루어진 단어가 주어지면,
다이얼을 걸기 위해서 필요한 최소 시간을 출력하는 문제이다.
이 문제를 풀기 위해 함수를 사용하였는데,
tel함수 안에서 각 문자마다 해당되는 아스키코드를 이용해 조건을 나누어주었다.
main함수에서 문자열을 입력받은 뒤 tel함수를 호출하면,
tel함수에서 문자열의 각 요소마다 해당되는 시간을 반환하고, 이 반환값들을 모두 더해주어 최소 시간을 얻을 수 있다.
위 과정을 거친 코드는 아래와 같다.
#include<iostream>
#include<string>
using namespace std;
int tel(int n)
{
int sec = 2;
if((n>=65)&&(n<=67))
sec += 1;
else if((n>=68)&&(n<=70))
sec += 2;
else if((n>=71)&&(n<=73))
sec += 3;
else if((n>=74)&&(n<=76))
sec += 4;
else if((n>=77)&&(n<=79))
sec += 5;
else if((n>=80)&&(n<=83))
sec += 6;
else if((n>=84)&&(n<=86))
sec += 7;
else if((n>=87)&&(n<=90))
sec += 8;
return sec;
}
int main()
{
string s;
cin >> s;
int sec = 0;
for(int i=0; i<s.length(); i++)
{
int num = s[i];
sec += tel(num);
}
cout << sec;
}