문제
다이얼에 맞는 번호로 환산해서 돌리는 데 걸리는 시간 구하기.
이게 문제의 다이얼이다. (출처: 백준 5622번 문제)
풀이
일일이 if먹여서 해결한 본인에게 치얼스… 야 이걸 푸네
여담이지만 옛날 핸드폰들은 터치고 뭐고 자판이 쿼티가 아니라 천지인 다 이런거였고 영문자를 실제로 저렇게 다이얼에 할당해뒀다. Z를 입력하려면 입력모드를 영대(영어 대문자)로 하고 9를 네 번 누르면 된다. 그래서 저 시절 핸드폰은 입력 자판이 지금처럼 언어별이 아니라 한글-영대-영소-특문(이모티콘)-숫자순이었다. 피처폰 시절에는 그래서 일본어로 글 쓰려면 컴퓨터로 들어가야 했고(자판 셋업하고…). 지금은 뭐…
내 핸드폰에 한글 영어 일어 독어 임티 자판 있음. 이거면 설명 끝.
import sys
a=sys.stdin.readline()
for i in a:
print(i)
일단 이렇게 하면 각개로 뽑는 건 된다. 뒷 일이 문제지. 그래서 한참을 고민하다 잠깐 화장실을 갔는데 ASCII 써먹자! 가 생각나서 각 다이얼 별로 맨 뒤 알파벳을 뽑아봤다.
- 1: 없음
- 2: C
- 3: F
- 4: I
- 5: L
- 6: O
- 7: S
- 8: V
- 9: Z
- 0: Operator
이게 그 측간신 버프냐 아무튼 여기서 실질적으로 0과 1은 할당된 알파벳이 없어서 안 쓰기때문에 다이얼은 2~9까지이고, 시간은 1씩 더한 3~10까지이다.
- 2: 67
- 3: 70
- 4: 73
- 5: 76
- 6: 79
- 7: 83
- 8: 86
- 9: 90
그리고 각 다이얼을 ASCII 번호로 변환하면 이렇게 된다. 그럼 어떻게 한다? 범위 잡고 if 착수해야지.
import sys
a = sys.stdin.readline().strip()
time = 0
for i in a:
if ord(i) <= 67:
time += 3
elif ord(i) <= 70:
time += 4
elif ord(i) <= 73:
time += 5
elif ord(i) <= 76:
time += 6
elif ord(i) <= 79:
time += 7
elif ord(i) <= 83:
time += 8
elif ord(i) <= 86:
time += 9
else:
time += 10
print(time)
각 다이얼별로 끝나는 ASCII 번호가 있고, 그 번호보다 작으면 소요시간을 할당하는 식. 입력은 알파벳이고, 실질적으로 ASCII 번호로 변환하기때문에 범위는 어차피 65~90이다.
Reply