#53. 백준 5622번 문제 풀이: 다이얼 | 문제 원본 보기 |
--입력-- WA --출력-- 13 --입력-- UNUCIC --출력-- 36
알파벳에 해당하는 숫자는 배열에 알파벳 순서에 따른 번호를 넣어두고 찾는다. ns = "22233344455566677778889999"; //ABCDE.. 문자는 아스키코드값이며 ABC 순서대로 위치하므로 B의 경우 'A'-'A'는 0, 'B'-'A' 를 빼면 1, ..이 된다. 이 원리로 문자에 해당하는 배열값을 뽑아낼 수 있다. 각 번호별 걸리는 시간은 아래와 같다. 1 을 거는데 걸리는 시간은 2초 2 를 거는데 걸리는 시간은 2초 +1초 = 3초 3 은 4초, 4는 5초 즉 n번호를 거는데 걸리는 시간은 n+1초가 된다.
#include <iostream>
using namespace std;
int main() {
int i, l, cn, n, sec = 0;
string ns = "22233344455566677778889999";
// ABC 에 해당하는 순서로 있다고 가정하고 전화번호를 세팅.
string wd;
cin >> wd; // 전화번호 알파벳단어를 입력받는다
sec = 0; // 걸린 시간, 초기값 0
l = wd.length(); // 단어길이
for(i = 0; i < l; i++) {
cn = wd[i]-'A'; // 한 글자씩 문자를 인덱스 숫자로 변경해 준다.
n = ns[cn]-'0'; // 문자숫자를 정수로 변경. 예) '1'-'0' = 1
sec += n + 1; // 걸리는 시간( 번호+1초)를 더해줌
}
cout << sec; // 걸린 시간을 출력
return 0;
}