티스토리 뷰
문제
상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다.
전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다.
숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.
상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다.
할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 시간을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어는 2글자~15글자로 이루어져 있다.
출력
첫째 줄에 다이얼을 걸기 위해서 필요한 시간을 출력한다.
예제 입력 1
UNUCIC
예제 출력 1
36
해설
단순한 문제다. if else 문이 길어서 노가다 코드라는 점 때문에 마음에 들지 않는다.
아스키코드상 영문자는 일정한 정수값으로 대치될 수 있다. 그렇기에 대소 비교가 가능하므로 위 문제에서 A, B, C 문자에 대응하는 2는 if문으로 if( dial >= 'A' && dial <= 'C')
로 표현할 수 있다. 이와 동일한 방식으로 다른 다이얼 숫자를 표현하고 각 if 문에 해당할 때 추가되는 시간을 더해주면 된다.
소스코드: C
#include <stdio.h>
int TransToTime(char dial);
int TransToTime(char dial)
{
int times = 2;
if (dial >= 'A' && dial <= 'C') {
times += 1;
} else if (dial >= 'D' && dial <= 'F') {
times += 2;
} else if (dial >= 'G' && dial <= 'I') {
times += 3;
} else if (dial >= 'J' && dial <= 'L') {
times += 4;
} else if (dial >= 'M' && dial <= 'O') {
times += 5;
} else if (dial >= 'P' && dial <= 'S') {
times += 6;
} else if (dial >= 'T' && dial <= 'V') {
times += 7;
} else if (dial >= 'W' && dial <= 'Z') {
times += 8;
} else {
times += 8;
}
return times;
}
int main(int argc, char *argv[])
{
char input_str[16];
int i, sum = 0;
scanf("%s", input_str);
for (i = 0; input_str[i] != '\0'; ++i) {
sum += TransToTime(input_str[i]);
}
printf("%d\n", sum);
return 0;
}
'Python > 심사문제' 카테고리의 다른 글
백준(BAEKJOON): 크로아티아 알파벳(2941번) (0) | 2020.03.28 |
---|---|
백준(BAEKJOON): 상수(2908번) (0) | 2020.03.28 |
백준(BAEKJOON): 단어의 개수(1152번) (0) | 2020.03.26 |
백준(BAEKJOON): 단어 공부(1157번) (0) | 2020.03.25 |
백준(BAEKJOON): 문자열반복(2675번) (0) | 2020.03.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- books
- BOJ
- QtDesigner
- QComboBox
- MacOS
- Python
- word
- C
- python3
- 소수
- QLabel
- Mac
- baekjoon
- tips
- 북한말
- Tistory
- words
- judge
- setText()
- QGridLayout
- locallibrary
- 리찬규
- 리규찬
- 백준
- django
- QLineEdit
- NK
- 유래
- 어원
- PyQt5
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함
02-18 12:33