한 걸음씩
[백준][python] 5622 다이얼 본문
https://www.acmicpc.net/problem/5622
5622번: 다이얼
첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.
www.acmicpc.net
풀이 과정 1
1. dial이라는 변수를 생성해서 알파벳을 문자열형태로 집어넣고
2. 단어를 입력받고
3. dial을 for loop 돌리고
4. dial에서 나온 요소 i를 또 한 번 for loop 돌리고
5. 입력받았던 단어(word)를 for loop 돌려서
6. i로 for loop 돌려서 나온 n과 word를 for loop 돌려서 나온 w이 같다면(조건문)
7. 시간이라는 변수에 dial.index를 통해 위치에 따른 수를 반환한다
🌱 index는 요소를 통해서 위치를 찾는 함수이다!!
# 40ms
dial = [
'ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ'
]
word = input()
time = 0
for i in dial:
for n in i:
for w in word:
if n == w:
time += dial.index(i) + 3
print(time)
풀이 과정 2
1. 입력받을 때 소문자로 list 받기 (소문자로 받은 이유는 내가 대문자 입력하기 귀찮아서..)
2. 입력 받은 word 변수 for loop
3. dial 리스트 for loop
4. word 요소(i)가 dial 요소(j) 안에 있다면 time변수리스트에 append 하는데 index함수로 값을 통해 위치를 찾아서 +3을 해준다
'+3'을 왜 해주는 걸까?
'unucic'라는 단어를 입력받았다고 가정해보자
dial 리스트에서 위치를 찾아보면 u = 6, a = 4... 의 위치를 가리키고 있다(리스트 숫자 세는 방법대로)
이 부분은 단순히 리스트에서 위치만 찾은 거고 위의 다이얼 사진을 보면 'u'는 숫자 8에 위치해 있다. 따라서 +2를 해줘야 한다!
여기까지가 다이얼 위치의 숫자를 찾은 거고
몇 초가 걸리는지를 알아야 하는데 문제에서 '숫자 1을 걸려면 총 2초가 필요하다'라고 했으니까 'u'까지 몇 초가 걸리는지 계산해보 면 9초가 나온다. 따라서 다이얼 숫자 8을 누르면 9초가 걸린다는 의미이니까 +1을 해주는 것이다
# 44ms
dial = ['abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']
word = list(input().lower())
time = []
for j in word:
for i in dial:
if j in i:
time.append(dial.index(i) + 3)
else:
pass
print(sum(time))
리뷰
첫 번째 시도 )
이 문제는 다이얼에서 몇 번을 누르는지는 전혀 중요하지 않고(-> 중요하지 않은 건 아닌 것 같고 문제를 어떻게 바라보냐에 따라 달라질 것 같다. [풀이과정 2]에서 코드 짤 때 몇 번을 누르는지를 생각해서 풀었기 때문에...) 알파벳에 따른 시간만 중요하기 때문에
딕셔너리로 접근해서 값을 리스트로 만들어서 reversed 해볼까 했지만 리스트는 키에 들어갈 수 없어서 실패했고
그래서 다른 사람 코드를 참조했더니 리스트로 접근해서 for loop과 조건문을 통해서 풀면 되는 문제였다
두 번째 시도 )
처음 이 문제를 봤을 때 어떻게 풀어야 할지 접근도 못했는데 시간이 지나서 다시 보니까
알파벳으로 먼저 접근하고 다이얼 숫자 위치 찾고 몇 초 걸리는지 계산해 주면 된다!
첫 번째 시도에서의 코드는 내가 푼 것도 아니라서 왜 +3초인지 이해할 수 없었는데
내가 직접 풀어보니까 왜 +3인지 이해하게 되었다
'BOJ' 카테고리의 다른 글
[백준][python] 2947 나무 조각 (0) | 2023.01.24 |
---|---|
[백준][python] 1110 더하기 사이클 ✅ (0) | 2023.01.24 |
[백준][python] 10988 팰린드롬인지 확인하기 (0) | 2023.01.24 |
[백준][python] 2789 유학금지 (0) | 2023.01.24 |
[백준][python] 2577 숫자의 개수 (0) | 2023.01.24 |