29일차 문제

양진혁·2021년 11월 29일
0

문제풀이

알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.

예제 입력 1
baekjoon

예제 출력 1
1 0 -1 -1 2 -1 -1 -1 -1 4 3 -1 -1 7 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

a = input()
alpha = 'abcdefghijklmnopqrstuvwxyz'
for i in alpha :
  if i in a:
    print(a.index(i), end = " ")
  else:
    print(-1, end=" ")

먼저 alpha라는 소문자 알파벳을 만들어 준 후 반복문을 만든 후 if문을 통해서 만약 i가 a 안에 있으면 i의 순서를 그게 아니면 -1을 리턴시켜줬다.

두번째 문제는

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

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

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

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

예제 입력 1
WA

예제 출력 1
13

a = input()
li = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ']
re = 0
for i in range(len(a)):
    for j in li:
        if a[i] in j:
            re += li.index(j)+3
print(re)

먼저 다이얼 안에 들어가는 알파벳 리스트를 만들어 낸 후 이중 반복문을 사용해서 첫번째 반복문에는 a의 길이만큼 두번째는 li를 j로 받아 만약 a[i]번째 인덱스가 j에 있다면 리스트에서 j의 순서를 찾아서 리스트가 0부터 시작하기 때문에 결과에 3을 더해준다.

0개의 댓글