https://programmers.co.kr/learn/courses/30/lessons/84512
혼자서 풀어보려다가 규칙이 잘 안보여서 결국 여러개의 블로그를 참고했다.
I가 1563이라는 것에서 힌트를 찾아야한다.
0번째 인덱스에서 A가 1, I가 1563이면, A에서 E까지 (1563-1)/2 = 781 이라는 것을 유추할 수 있다.
A=>1, E=>782, I=>1563
그리고 AAAAA와 AAAAE의 차이는 1이고 AAAA와 AAAE의 차이는 6이라는 것도 유심히 봐야한다.
AAAA와 AAAE의 차이는 1*5 + 1 = 6이라는 것.
AAA와 AAE의 차이는 6*5 + 1 = 31.
AA와 AE의 차이는 31*5 + 1 = 156.
A와 E의 차이는 156*5 + 1 = 781.
이런 규칙을 찾아서 알고리즘을 구현하면 된다.
Python
풀이 1
1
2
3
4
5
6
7
|
def solution(word):
answer = 0
arr = ['A', 'E', 'I', 'O', 'U']
num = [781, 156, 31, 6, 1]
for i in range(len(word)):
answer += arr.index(word[i]) * num[i] + 1
return answer
|
cs |
위에서 설명한대로 풀면 되지만 조금 더 직관적인 방법을 찾고싶어서 더 검색해보았다.
풀이 2
https://latte-is-horse.tistory.com/217
두번째 풀이가 더 직관적이였다. 어딘가에서 이 문제의 모든 경우의 수는 5^5 + 5^4 + 5^3 + 5^2 + 5로 시간초과가 나지 않아서 완전탐색으로 풀어도 된다는 말을 보았다. (A~U: 5, AA~UU: 5*5 ...여서 경우의 수가 저렇게 나오는 듯 하다)
그래서 딕셔너리로 문제와 똑같은 사전을 만들어서 인덱스를 찾는 방법이다.
'프로그래머스 풀이' 카테고리의 다른 글
프로그래머스 2단계 - n^2 배열자르기 (Python) (0) | 2022.03.11 |
---|---|
프로그래머스 2단계 - [1차] 캐시 (0) | 2022.02.13 |
프로그래머스 2단계 - 후보키 (Python) (0) | 2021.12.01 |
프로그래머스 2단계 - 괄호 회전하기 (Python) (0) | 2021.11.17 |
프로그래머스 2단계 - 조이스틱 (Python) (0) | 2021.11.14 |