본문 바로가기
BOJ/[BOJ] Python

백준 5622번 풀이

by Lv. 35 라이츄 2022. 8. 18.

문제

https://www.acmicpc.net/problem/5622

 

5622번: 다이얼

첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.

www.acmicpc.net

다이얼에 맞는 번호로 환산해서 돌리는 데 걸리는 시간 구하기.

이게 문제의 다이얼이다. (출처: 백준 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이다.

'BOJ > [BOJ] Python' 카테고리의 다른 글

백준 1712번 풀이  (0) 2022.08.18
백준 2941번 풀이  (0) 2022.08.18
백준 2908번 풀이  (0) 2022.08.18
백준 1152번 풀이  (0) 2022.08.18
백준 10809번 풀이  (0) 2022.08.18

최근댓글

최근글

skin by © 2024 ttutta