Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- 4949
- File 조작
- 전자책
- 브런치
- 1874
- LJESNJAK
- IT
- 입력 버퍼
- process control
- The Balance of the World
- 해바
- For Beginners
- c++
- c
- 균형잡힌 세상
- system programming
- 2941
- Parenthesis
- QA
- Process Communication
- 백준
- BAKA
- 10773
- 5622
- Zero That Out
- 시프
- Baekjoon
- file IO
- 바샤
- 시스템 프로그래밍
Archives
- Today
- Total
해바
5622) 7. 문자열 : 다이얼(BAKA) 본문
문제
https://www.acmicpc.net/problem/5622
5622번: 다이얼
문제 상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다. 전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다. 숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.
www.acmicpc.net
풀이
else if 란에 양쪽 다 범위를 정해주지 않으면 '\n' 과 같은 것들이 str <= 'F' 범위에 걸리더라. 성적같은 경우는 < 90, <80, <70 ... 이런 식으로 짜도 되던데 이건 왜 걸릴까? 내가 헷갈리는게 있나..
#include "cstdio"
// dial number + 1 = demand time(sec)
// A~C : 1, D~F : 2, ... W~Z : 9
int matchAlp(char str) {
if('A' <= str && str <= 'C') return 2;
else if('D' <= str && str <= 'F') return 3;
else if('G' <= str && str <= 'I') return 4;
else if('J' <= str && str <= 'L') return 5;
else if('M' <= str && str <= 'O') return 6;
else if('P' <= str && str <= 'S') return 7;
else if('T' <= str && str <= 'V') return 8;
else if('W' <= str && str <= 'Z') return 9;
else return -1;
}
int main() {
int time(0);
char alp('\0');
while(alp != '\n') {
alp = getchar();
time += matchAlp(alp) + 1;
}
printf("%d\n", time);
return 0;
}
'C, C++' 카테고리의 다른 글
1316) 7. 문자열 : 그룹 단어 체커 (0) | 2019.08.17 |
---|---|
2941) 7. 문자열 : 크로아티아 알파벳(LJESNJAK) (0) | 2019.08.17 |
2908) 7. 문자열 : 상수(FILIP) (0) | 2019.08.14 |
1152) 7. 문자열 : 단어의 개수 (0) | 2019.08.14 |
1157) 7. 문자열 : 단어 공부 (0) | 2019.08.14 |
Comments