문제


첫 번째 해결방법
A를 0 Z를 25로 보고 각 다이얼(2부터 9까지)에
들어가는 알파벳의 최댓값을 넣어준다.
그 후 7이거나 9일 때는 알파벳이 네 개 들어있으므로,
알파벳의 값이 3 더 작을 때
다이얼의 값보다 1더 큰수를 answer에 더해주고,
나머지의 경우에는 2 더 작을 때 더해주어 출력한다.
data = list(input())
num = 2
alpha = []
answer = 0
for i in range(0, 16, 2):
result = num + i
num += 1
if num < 8:
alpha.append((result, num - 1))
elif num < 10:
alpha.append((result + 1, num - 1))
else:
alpha.append((result + 2, num - 1))
for ans in data:
alpha_num = ord(ans) - ord('A')
for x,y in alpha:
if y == 7 or 9:
if x - 3 <= alpha_num <= x:
answer += y + 1
break
else:
if x - 2 <= alpha_num <= x:
answer += y + 1
print(answer)
abc 012 다이얼 번호와 최댓값의 차이 : 0 (2 - 2) 다이얼 : 2
def 345 다이얼 번호와 최댓값의 차이 : 2 (5 - 3) 다이얼 : 3
ghi 678 다이얼 번호와 최댓값의 차이 : 4 (8 - 4) 다이얼 : 4
jkl 9,10,11 다이얼 번호와 최댓값의 차이 : 6 (11 - 5) 다이얼 : 5
mno 12,13,14 다이얼 번호와 최댓값의 차이 : 8 (14 - 6) 다이얼 : 6
다이얼 번호가 1씩 커질 때마다
다이얼 번호와 최댓값의 차이는
2씩 늘어나는 규칙이 보인다.
따라서 result 변수를 만들어
다이얼 번호가 1씩 늘어날 때 마다
2씩 더해서 최댓값을 넣어
배열에 다이얼 번호와 같이 넣어주었다.
7일 때는 다이얼에 문자가 4개 있으므로,
최댓값을 더할 때 2를 더해주는 것이 아닌
3을 더해주어 넣어야 하므로, 1을 더 더해서 넣어주었고,
8일 때도 위와 같이 연산을 해서 다음 세 문자를 넣어주었다.
그 후 9일 때는 마지막 문자까지 더해주어야 하므로
총 2를 더해서 배열에 넣어준 후,
다이얼의 번호가 7이거나 9일 때는 최댓값보다 3 더 작은 경우까지
그 다이얼에 속한 것이므로 answer에 더해주었고, 그 이외의 경우에는
문자가 3개씩 들어있으므로 2 더 작은 경우까지
그 다이얼에 속한 것으로 처리하여 answer에 더해서 출력해주었다.
더 간단하게 풀 수 있는 방법이 있을 것 같아
다른분들의 풀이도 찾아보았다.
두 번째 해결방법
배열에 문자들을 하나씩 넣어 알파벳을 입력받은 후
알파벳 길이만큼 for문을 돌리고
다이얼에 들어있는 문자들도 for문을 돌면서 탐색한 후,
입력값과 일치하는 알파벳을 찾으면
다이얼의 인덱스값 + 3을 해서(ABC 다이얼을 돌릴 때
걸리는 시간은 3초부터 시작해서 1초씩 늘어가므로)
answer변수에 하나씩 더한 후 출력한다.
dial = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ']
alpha = input()
answer = 0
for i in range(len(alpha)):
for j in dial:
if alpha[i] in j:
answer += dial.index(j) + 3
print(answer)
문제를 너무 복잡하게 생각하고 푼 것 같아서 다른 분들의 코드를 보고 머쓱해졌다^^;;
'Algorithm > 백준' 카테고리의 다른 글
| [Python] 백준 1697번 숨바꼭질 (DFS/BFS) (0) | 2022.04.20 |
|---|---|
| 백준 7569번 토마토 (0) | 2022.04.18 |
| [Python] 백준 7576번 토마토(DFS/BFS) (0) | 2022.04.15 |
| [Python] 백준 2178번 미로찾기(DFS/BFS) (0) | 2022.04.15 |
| [python] 백준 1012번 "유기농배추"(DFS/BFS) (0) | 2022.04.14 |