본문 바로가기
코딩테스트/백준 알고리즘

백준 알고리즘 | 5622 : 다이얼 (Python / 파이썬)

by 함께 공부해요 2020. 9. 21.


다이얼 성공출처다국어분류

시간 제한

메모리 제한

제출

정답

맞은 사람

정답 비율

1 초

128 MB

33059

18725

16955

57.298%

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

 

5622번: 다이얼

첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어는 2글자~15글자로 이루어져 있다.

www.acmicpc.net


문제

상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다.

전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다.

숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.

상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다.

할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 시간을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어는 2글자~15글자로 이루어져 있다.

출력

첫째 줄에 다이얼을 걸기 위해서 필요한 시간을 출력한다.

알고리즘 분류

구현


백준 알고리즘 # 5622번 : 다이얼

출처:  https://wikidocs.net/14

alphabet = input().lower()
dial = ["abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"]
time = 0

for i in range(len(alphabet)):
    for j in dial:
        if alphabet[i] in j:
            time += dial.index(j) + 3

print(time)

 

풀이

변수 alphabet을 설정해서 lower()로 소문자로 단어를 입력받고

변수 dial로 숫자에 적혀있는 각각의 소문자를 [] 리스트로 만들어준다.

그리고 다이얼을 걸기 위해 필요한 시간을 알기 위해 time 변수를 0으로 초기화시켜준다.

그리고 입력받은 변수의 len() 만큼 i를 반복해주고

이중 반복문을 사용해서 dial에 있는 문자열 하나하나를 j로 반복합니다.

dial = ["abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"]

dial = [0, 1, 2, 3, 4, 5, 6, 7]

위 코드를 참고해서 if문으로 입력받은 alphabet이 j의 문자열에 해당한다면

time에 해당하는 dial의 index 수와 j가 0부터 반복하기 시작한 것을 감안한 +3을 반복해서 더해주면 끄-읏!👏

자세한 코드가 궁금하신 분들은 아래 GitHub 참고해주세요🙏

 

wook2124/Algorithm

Practice algorithm. Contribute to wook2124/Algorithm development by creating an account on GitHub.

github.com

 

최종 소스코드

댓글